Ayuda para recorrer registros access desde visual
Estoy creando un aplicación y tengo dificultades para hacer lo siguiente:
Tengo un formulario donde dígito el numero de identifiacion de una persona y al dar click en un botón, se me carga la información de esta... El problema es si tengo varios registros dela misma persona,, no puedo ver si no solo el primero,,, y m gustaría que digitando el numero de una persona,, pueda seguir recorriendo los registros que coinciden con el numero digitado...
Tengo el siguiente código que es el que me busca los datos,, y le puse los botones primero, anterior, siguiente, ultimo,,, pero cuando doy click pasa a otros registros que no coiniciden con el numero digitado... El problema es que tengo como 10000 registros y pues se me haría difícil tener que recorrerlos todos uno a uno.. Entoncences la forma que me sirve es escribir en un texbox el numero de identificación el cual quiero recorrer,, este es un ejemplo de lo que quiero hacer para ver si se puede hacer algo.. Y pues de funcionar me serviría como guía para aplicarlo al formulario real..
Option Explicit
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Funcion para buscar por medio del numero de identifiacion los registros
'del usuario
Sub Busca(ByVal Usuario As String)
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strConexion As String
Dim txtSQl As String
strConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
cn.Open strConexion
txtSQl = "select * from personas where Identificacion = '" & Usuario & "'"
rs.Open txtSQl, cn
If rs.EOF Then
MsgBox "Este usuario no se encuentra "
'en este texbox digito el numero que quiero buscar
Text4.SetFocus
Text4.Text = ""
Else
'Carga las coincidencias para el numero digitado
Me.Text1 = rs!id
Me.Text5 = rs!Identificacion
Me.Text2 = rs!Nombre
Me.Text3 = rs!Apellido
End If
rs.Close
cn.Close
End Sub
'Cuando doy click ejecuta la funcion Busca y llena los datos correspondiente
'al numero de identifiacion
Private Sub Buscar_Click()
Busca Me.Text4.Text
End Sub
'Para ver el siguiente registro
Private Sub Siguiente_Click()
rs.MoveNext
If rs.EOF Then
rs.MoveLast
MsgBox " Se está en el ultimo registro ", vbInformation
Else
Call Visualizar_Datos
End If
End Sub
Private Sub Form_Load()
' establece la cadena de conexión a utilizar en la propiedad ConnectionString
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
App.Path & "\db1.mdb" & ";Persist Security Info=False"
cnn.Open
rs.Open "Select * from personas", cnn, adOpenDynamic, adLockOptimistic
End Sub
'Para ir al primer registro
Private Sub Primero_Click()
rs.MoveFirst
Call Visualizar_Datos
End Sub
'Para ir al ultimo registro
Private Sub Ultimo_Click()
rs.MoveLast
Call Visualizar_Datos
End Sub
'Me muestra el registro anterior
Private Sub Anterior_Click()
rs.MovePrevious
If rs.BOF Then
rs.MoveFirst
MsgBox " este es el Primer registro ", vbInformation, " Primer registro"
Else
Call Visualizar_Datos
End If
End Sub
'Sub que carga los datos del recordset y los asigna a los textbox
Private Sub Visualizar_Datos()
Text1.Text = CLng(rs("Id"))
Text5.Text = rs("Identificacion")
Text2.Text = rs("Nombre")
Text3.Text = rs("Apellido")
End Sub
Agradezco la colaboración, ya que estoy terminado una aplicación y esto me tiene varado.. Si necesita el archivo también lo puedo enviar,,, o si me pueden enviar un ejemplo a la siguiente dirección [email protected]
Tengo un formulario donde dígito el numero de identifiacion de una persona y al dar click en un botón, se me carga la información de esta... El problema es si tengo varios registros dela misma persona,, no puedo ver si no solo el primero,,, y m gustaría que digitando el numero de una persona,, pueda seguir recorriendo los registros que coinciden con el numero digitado...
Tengo el siguiente código que es el que me busca los datos,, y le puse los botones primero, anterior, siguiente, ultimo,,, pero cuando doy click pasa a otros registros que no coiniciden con el numero digitado... El problema es que tengo como 10000 registros y pues se me haría difícil tener que recorrerlos todos uno a uno.. Entoncences la forma que me sirve es escribir en un texbox el numero de identificación el cual quiero recorrer,, este es un ejemplo de lo que quiero hacer para ver si se puede hacer algo.. Y pues de funcionar me serviría como guía para aplicarlo al formulario real..
Option Explicit
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Funcion para buscar por medio del numero de identifiacion los registros
'del usuario
Sub Busca(ByVal Usuario As String)
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strConexion As String
Dim txtSQl As String
strConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
cn.Open strConexion
txtSQl = "select * from personas where Identificacion = '" & Usuario & "'"
rs.Open txtSQl, cn
If rs.EOF Then
MsgBox "Este usuario no se encuentra "
'en este texbox digito el numero que quiero buscar
Text4.SetFocus
Text4.Text = ""
Else
'Carga las coincidencias para el numero digitado
Me.Text1 = rs!id
Me.Text5 = rs!Identificacion
Me.Text2 = rs!Nombre
Me.Text3 = rs!Apellido
End If
rs.Close
cn.Close
End Sub
'Cuando doy click ejecuta la funcion Busca y llena los datos correspondiente
'al numero de identifiacion
Private Sub Buscar_Click()
Busca Me.Text4.Text
End Sub
'Para ver el siguiente registro
Private Sub Siguiente_Click()
rs.MoveNext
If rs.EOF Then
rs.MoveLast
MsgBox " Se está en el ultimo registro ", vbInformation
Else
Call Visualizar_Datos
End If
End Sub
Private Sub Form_Load()
' establece la cadena de conexión a utilizar en la propiedad ConnectionString
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
App.Path & "\db1.mdb" & ";Persist Security Info=False"
cnn.Open
rs.Open "Select * from personas", cnn, adOpenDynamic, adLockOptimistic
End Sub
'Para ir al primer registro
Private Sub Primero_Click()
rs.MoveFirst
Call Visualizar_Datos
End Sub
'Para ir al ultimo registro
Private Sub Ultimo_Click()
rs.MoveLast
Call Visualizar_Datos
End Sub
'Me muestra el registro anterior
Private Sub Anterior_Click()
rs.MovePrevious
If rs.BOF Then
rs.MoveFirst
MsgBox " este es el Primer registro ", vbInformation, " Primer registro"
Else
Call Visualizar_Datos
End If
End Sub
'Sub que carga los datos del recordset y los asigna a los textbox
Private Sub Visualizar_Datos()
Text1.Text = CLng(rs("Id"))
Text5.Text = rs("Identificacion")
Text2.Text = rs("Nombre")
Text3.Text = rs("Apellido")
End Sub
Agradezco la colaboración, ya que estoy terminado una aplicación y esto me tiene varado.. Si necesita el archivo también lo puedo enviar,,, o si me pueden enviar un ejemplo a la siguiente dirección [email protected]
1 Respuesta
Respuesta de hakuario
1