Filtrar datos desde access, utilizando un Listbox.

Necesito ayuda con lo siguiente lo que trato de hacer es que al cargar el formulario me filtre los datos que correspondan al usuario el cual esta grabado en un label.

Este código funciona pero solo me trae un registro el cual corresponde al primero - no esta recorriendo toda la base de datos en busca de los demás.

Label22 = "JSEVILLG"

Call Gestion_BO
Set Rv = New ADODB.Recordset
Rv.Open "SELECT * FROM BD_Gestion_BO", miConexion, adOpenKeyset, adLockOptimistic, adCmdText

Rv.Find "USUARIO_GESTOR = '" & Label22.Caption & "'", , , 1
If Rv.BOF = False And Rv.EOF = False Then
Me.ListBox2.AddItem Rv!FECHA_Y_HORA
Me.ListBox2.List(v, 1) = Rv!AGENTE
Me.ListBox2.List(v, 2) = Rv!NOMBRE_Y_APELLIDO
Me.ListBox2.List(v, 3) = Rv!NÚMERO_DE_DOCUMENTO
Me.ListBox2.List(v, 4) = Rv!MOVIL_DE_CONTACTO
Me.ListBox2.List(v, 5) = Rv!MOTIVO_DE_ENVÍO
v = v + 1
Rv.MoveNext
End If

1 respuesta

Respuesta
2

No sé, si he entendido bien, ¿quieres qué al abrir el formulario, en el subformulario te "filtre" aquellos registros en que un campo sea igual al usuario que aparece en la etiqueta?. Si es eso, supongamos que tengo una tabla Clientes como la imagen y que voy a usar los tres campos para hacer un formulario continuo

En este caso voy a usar Alemania como si fuera Usuario. En el formulario Tengo una etiqueta que va a "recoger" su nombre y en el subformulario me va a mostrar aquellos registro cuyo país sea Alemania

El código del evento Al cargar es(no le hagas caso a la primera línea, que es la que uso para buscar Alemania)

Private Sub Form_Load()
Usuario.Caption = DLookup("usuario", "registro")
Me.Clientes.Form.RecordSource = "select * from clientes where pais like '" & Me.Usuario.Caption & "'"
End Sub

No me ha funcionado o no se como hacerlo, he intentando con ello pero pasa igual solo me trae el primer registro que encuentra según el criterio de búsqueda.  Se necesita como un bucle que continué buscando siempre y cuando la condición se cumpla! 

Label22 = "JSEVILLG"

Call Gestion_BO
Set Rv = New ADODB.Recordset
Rv.Open "SELECT * FROM BD_Gestion_BO", miConexion, adOpenKeyset, adLockOptimistic, adCmdText

Rv.Find "USUARIO_GESTOR = '" & Label22.Caption & "'", , , 1
If Rv.BOF = False And Rv.EOF = False Then
Me.ListBox2.AddItem Rv!FECHA_Y_HORA
Me.ListBox2.List(v, 1) = Rv!AGENTE
Me.ListBox2.List(v, 2) = Rv!NOMBRE_Y_APELLIDO
Me.ListBox2.List(v, 3) = Rv!NÚMERO_DE_DOCUMENTO
Me.ListBox2.List(v, 4) = Rv!MOVIL_DE_CONTACTO
Me.ListBox2.List(v, 5) = Rv!MOTIVO_DE_ENVÍO
v = v + 1
Rv.MoveNext
End If

Muchas gracias ya he encontrado la solución.

Estaba sencilla pero bueno, aun estoy aprendiendo.


Label22 = "JSEVILLG"

Call Gestion_BO
Set Rv = New ADODB.Recordset
Rv.Open "SELECT * FROM BD_Gestion_BO WHERE USUARIO_GESTOR = '" & Label22.Caption & "'", miConexion, adOpenKeyset, adLockOptimistic, adCmdText

While Rv.EOF = False
Me.ListBox2.AddItem Rv!FECHA_Y_HORA
Me.ListBox2.List(v, 1) = Rv!AGENTE
Me.ListBox2.List(v, 2) = Rv!NOMBRE_Y_APELLIDO
Me.ListBox2.List(v, 3) = Rv!NÚMERO_DE_DOCUMENTO
Me.ListBox2.List(v, 4) = Rv!MOVIL_DE_CONTACTO
Me.ListBox2.List(v, 5) = Rv!MOTIVO_DE_ENVÍO
v = v + 1
Rv.MoveNext
Wend
Rv.Close

:)

No sé como lo haces, ni que hace el cuadro de lista. En el enunciado decías que el nombre del usuario aparece en la etiqueta y lo que hace el código es buscar todos( no le veo necesidad al "bucle") aquellos registros en que el usuario sea igual al que figura en la etiqueta.

Rv.Open "SELECT * FROM BD_Gestion_BO WHERE USUARIO_GESTOR = '" & Label22.Caption & "'", miConexion, adOpenKeyset, adLockOptimistic, adCmdText

Lo que hace este código es filtrar los datos al usuario correspondiente según logueo.

Para gestionar solo lo suyo. En la bandeja principal de donde se toman los registros si aparecen todos los que estén en la tabla. Pero al momento de presionar el botón obtener allí registra que usuario lo hizo el filtro hace que solo vea lo suyo y no lo de otro. Etc. je je

Me he perdido. Vamos a ver, si tienes un formulario, vamos a llamarle de entrada donde escribes el usuario y(o) contraseña. Puedes crear una tabla llamada, por ejemplo, Registro, donde te guarde, por ejemplo, el usuario que ha entrado, el día y la hora. Luego, en el formulario que quieres filtrar, en el evento al cargar puedes poner

nombreetiqueta.caption=dlast("usuario","registro")

Con lo que en la etiqueta te aparece el nombre del usuario que ha entrado. Luego, o bien le dices, lo que te ponía en la segunda linea del código, o si no es un formulario, que es un cuadro de lista bastaría con usar

nombrecuadrodelista.rowsource="select cliente, telefono, dirección, etc from nombretabla where usuario like '" & me.etiqueta.caption & "'"

O si vas a permitir unas cosas a unos usuarios y otras a otros puedes usar

Select case usuario.caption

case is="eduardo"

lo que quieras en este caso

Case is="pedro"

lo mismo

end select

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas