SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: olarrere en Lunes 5 de Mayo de 2003, 17:47
-
Hola, estoy intentando acceder a registros de una BDD access y los veo bien, pero al tratar de acceder a uno en particular no lo consigo y siempre rescato el primero o el último depediendo de lo que indique en el comando move...(first,last,etc), a pesar de indicar otra cosa en la clave de búsqueda
NumRut = Val(Combo1.Text)
Buscar = "rut='" & NumRut & "'"
Data2.Refresh
Data2.Recordset.MoveLast
Data2.Recordset.FindFirst Buscar
¿Que estoy haciendo mal?, ¿Que falta? o ¿Que no se puede hacer?. Gracias
-
Si el campo "rut" es de tipo numérico en la BDD deberías quitar las comillas:
NumRut = Val(Combo1.Text)
Buscar = "rut=" & NumRut
Data2.Refresh
'La siguiente línea de código no es necasaria
Data2.Recordset.MoveLast
Data2.Recordset.FindFirst Buscar
'También debes comprobar si la búsqueda encontró algo:
If Data2.RecordSet.NoMatch Then
No encontró nada
End If
:suerte:
-
:flower:
La clave "rut" es una variable tipo string, por eso va entre comillas, voy a probar quitando la línea que me indicas. La sentencia NoMatch la utilizo y siempre acusa que encuentra registro, el problema es que lo encontrado no es lo requerido. Después te cuento como me está llendo.
-
Yo empleo las búsquedas habitualmente así:
Buscar = "rut like '" & NumRut & "'"
Data2.Recordset.FindFirst (Buscar)
If Data2.Recordset.NoMatch Then
MsgBox("No se encuentra el dato que se buscaba")
Exit Sub
End If
A ver si a la tercera va la vencida, a pesar de que veo bien los anteriores métodos... Saludos
-
Hola, de acuerdo a lo que me indicó angelescj probé del siguiente modo,
Dim NumRut As String
Dim Buscar As String
NumRut = Val(Combo1.Text)
Buscar = "rut='" & NumRut & "'"
Data2.Refresh
Data2.Recordset.FindFirst Buscar
If Data2.Recordset.NoMatch Then
MsgBox ("No encuentra registro")
Else
* Label4 = tabla1("nombre")
End If
* Sin embargo, la ejecución se detiene en esta línea y un mensaje me indica "no existe registro activo" y evidentemente, la sentencia NoMatch es falsa. :question:
-
En tu mensaje dices que la línea de código que da error es:
* Label4 = tabla1("nombre")
Mi pregunta es qué es tabla1?. Para acceder al campo debes poner:
Data2.Recordset.Fields("nombre")
o también:
Data2.Recordset.Fields(posicionDel Campo)
:suerte:
-
OK, me parece que ese es el problema. Lo que ocurre es que estoy referenciando a mi Recordset por el nombre que le asigno al momento de abrirlo, esto es Tabla1 y en realidad debiera usar el objeto DATA del modo que tu me indicas. Voy a probar y luego te cuento.
-
Funcionó....mis agradecimientos para angelescj y a J.M.Movilla. :good:
Un saludo desde Chile