Problema en usar findfirst

¿Me podría ayudar por favor?
Estoy trabajando con una base de datos en dbase IV.
Hice un código para trabajar con la información de la base de datos.
La parte de obtener información y moverse con MoveNext no hay problema,
pero cuando quiero buscar el registro donde se encuentra algún dato no me lo
permite. Me saca un error de "Operation is not supported for this type of object"
Y me lo señala en la línea que puse
Data1.Recordset.FindFirst "Nombre Like '" & txtBuscar.Text & "'"
¿Qué puse mal? Le agradecería que me pudiera ayudar
A continuación pongo el código que estoy utilizando.
Private Sub cmdBuscar_Click()
Data1.Recordset.FindFirst "Nombre Like '" & txtBuscar.Text & "'"
End Sub
Private Sub cmdCerrar_Click()
Data1.Database.Close
End
End Sub
Private Sub cmdSiguiente_Click()
Data1.Recordset.MoveNext
text1.Text = Data1.Recordset("nombre")
End Sub
Private Sub Command1_Click()
text1.Text = Data1.Recordset("nombre")
End Sub
Respuesta
1
Primero hace esto:
data1.recordset.openrecordset("SELECT * FROM nombre_de_la_tabla")
De este modo cargás el recordset para luego poder seguir filtrando.
Acá te pongo un ejemplo del uso del findfirst y findlast del msdn:
Set dbsNeptuno = OpenDatabase("Neptuno.mdb")
Set rstClientes = dbsNeptuno.OpenRecordset( _
"SELECT NombreCompañía, Ciudad, País " & _
"FROM Clientes ORDER BY NombreCompañía", _
dbOpenSnapshot)
Do While True
' Obtiene una entrada del usuario y construye la cadena de búsqueda.
strPaís = _
Trim(InputBox("Introduzca el país a buscar."))
If strPaís = "" Then Exit Do
strPaís = "País = '" & strPaís & "'"
With rstClientes
' Llena el Recordset.
. MoveLast
' Encuentra el primer registro que coincide
' Con la cadena de búsqueda. Sale del bucle si no existe ningún registro.
. FindFirst strPaís
If .NoMatch Then
MsgBox "No se encontraron registros con " & _
strPaís & "."
Exit Do
End If
Do While True
' Almacena el marcador de posición del registro actual.
varMarcador = .Bookmark
' Obtiene la elección del usuario del método a utilizar.
strMensaje = "Compañía: " & !NombreCompañía & _
vbCr & "Ciudad: " & !Ciudad & ", " & _
!País & vbCr & vbCr & _
strPaís & vbCr & vbCr & _
"[1 - Primero, 2 - Último, " & _
vbCr & "3 - Siguiente, " & _
"4 - Anterior]"
intComando = Val(Left(InputBox(strMensaje), 1))
If intComando < 1 Or intComando > 4 Then Exit Do
' Utiliza el método Find seleccionado. Si
' falla Find, vuelve al último registro actual.
If EncontrarCualquiera(intComando, rstClientes, _
strPaís) = False Then
.Bookmark = varMarcador
MsgBox "No hay coincidencias ?volviendo al " & _
"registro actual."
End If
Loop
End With
Exit Do
Loop
rstClientes.Close
dbsNeptuno.Close
End Sub
Function EncontrarCualquiera(intChoice As Integer, _
rstTemp As Recordset, _
strEncontrar As String) As Boolean
' Utiliza el método Find basado en la entrada del usuario.
Select Case intChoice
Case 1
rstTemp.FindFirst strEncontrar
Case 2
rstTemp.FindLast strEncontrar
Case 3
rstTemp.FindNext strEncontrar
Case 4
rstTemp.FindPrevious strEncontrar
End Select
' Establece el valor devuleto basado en la propiedad NoMatch.
EncontrarCualquiera = IIf(rstTemp.NoMatch, False, True)
End Function
Atención: fíjate que antes de usar el findfirst carga el recordset como te dije yo.
Atentamente. Manuel Fernández.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas