Relacionar cuadros de lista en búsqueda

Tengo un formulario de búsqueda así:
http://www.imagebam.com/image/af0114128232940
Donde en el cuadro de lista de la izquierda aparecen todos los registros del campo 'nombre' de la tabla 'Clientes', y se va modificando a medida que se escribe la búsqueda en el cuadro de texto, de modo que al escribir 'Mar' en la búsqueda sólo se muestran los nombres que comienzan con esas tres letras (esto mediante este código:
Me.Lista.RowSource = "select nombre from Clientes where nombre like '" & Me.Texto2.Text & "*'"
Me. Lista. Requery)
Hasta ahí va bien, ahora lo que quiero es que en el cuadro de lista de la izquierda me muestre las recetas asociadas al cliente que quedó seleccionado en la tabla de la izquierda luego de la búsqueda...
Lo que aparece en la lista izquierda es el campo 'nombre' de la tabla 'Clientes', y lo que debería aparecer en la segunda son todos los registros de la tabla 'Recetas' que contengan el mismo ID de cliente... Y ahí me pierdo. ¿Se puede hacer esto?
¿Podrían guiarme para hacerlo?

1 respuesta

Respuesta
1
otra vez ;)
Para hacer lo que comentas vamos a cambiar un poco tu código y algunas propiedades de los cuadros de lista. Te lo voy explicando para que sepas qué voy haciendo y, como siempre, tienes que cambiar los nombres que yo he puesto por los que tu tienes en la BD:
A) Cuadro de la izquierda (Clientes)
1- Cambia tu código por el siguiente (o lo adaptas al que tienes ;):
---
Dim strTecleo, miFiltro As String
    strTecleo = Me.Texto2.Text
    miFiltro = "SELECT [Clientes].[Id], [Clientes].[Nombre]"
    miFiltro = miFiltro & " FROM Clientes"
    miFiltro = miFiltro & " WHERE ([Clientes].[Nombre] like '" & strTecleo & "*')"
    Me.Lista.RowSource = miFiltro
    Me. Lista. Requery
---
Con este código incluimos el campo ID de la tabla clientes, que al ser clave principal nos identifica al cliente de manera inequívoca.
2- En las propiedades del cuadro de lista comprueba lo siguiente:
.- Pestaña Formato-> Número de columnas: tiene que ser 2 (recogerá los datos de ID y de NOMBRE CLIENTE
.- Pestaña Formato-> Ancho de columnas: escribes, por ejemplo (sin comillas): "0cm;3cm" (leído: cero centímetros;tres centímetros)
De esta manera la columna ID no se verá. Si no puedes ver bien el nombre del cliente vas aumentando los 3cm hasta que logres ver el nombre como quieres.
.- Pestaña Datos-> Columna dependiente: tiene que ser 1. Así, lo que haces es recoger el número de ID como el valor seleccionado en vez del nombre
B) Cuadro de la derecha (RECETAS)
Doy por supuesto que has creado el cuadro sin utilizar el asistente, porque entonces no sabría qué valores te habrá escrito en las propiedades. A este cuadro yo lo he llamado "lstRecetas".
C) Capturamos el código cliente del cuadro de la izquierda y lo mostramos en el de la derecha.
1.- En las propiedades del cuadro de la izquierda (CLIENTES), le escribimos este código al evento "Al hacer click", teniendo en cuenta que:
Recetas -> Es el nombre de la tabla donde se guardan las recetas
Receta -> Es el nombre del campo de la tabla "Recetas" que contiene el nombre de la receta
Cod -> El el nombre del campo de la tabla "Recetas" que contiene el código de cliente al que se asignó esa receta
---
Private Sub Lista_Click()
    Dim valor As Integer
    Dim miSeleccion As String
    valor = Me.Lista.Value
    miSeleccion = "SELECT [Recetas].[Receta]"
    miSeleccion = miSeleccion & " FROM Recetas"
    miSeleccion = miSeleccion & " WHERE [Recetas].[Cod] = " & valor & ""
    Me.lstRecetas.RowSourceType = "Tabla/Consulta"
    Me.lstRecetas.RowSource = miSeleccion
    Me.lstRecetas.Requery
End Sub
---
Y eso es todo. Ahora, en teoría, cuando hagas click sobre un nombre te deberían salir todas las recetas asociadas a ese cliente.
Ya me dirás si tienes algún problema.
Muchas gracias por tan espléndida respuesta!
Está muy claro todo, sólo una duda. El código que yo puse más arriba estaba en el evento OnChange del cuadro de texto donde se escribe la búsqueda.
El que has puesto en el paso A, ¿debo ponerlo en el mismo evento?
Efectivamente, puedes ponerlo perfectamente en OnChange del cuadro de texto. Te debería funcionar sin ningún problema.
Ya me dirás cosas.
Suerte!
Muchas gracias! Ya modifiqué lo que me indicaste y las búsquedas funcionan a la perfección, salvo por dos cositas: puedo 'ver' las recetas de cada cliente pero no puedo ver el texto en sí... es decir, se ve así:
http://www.imagebam.com/image/1bbc82128354547
Muestra los 4 registros que ese cliente tiene, eso está bien, pero no puedo leerlos... pero si copio y pego el contenido de la lista en otro lado, sí. Intenté cambiando el color de texto, y nada... ¿tienes idea qué puede ser?
Y la última, cuando salgo del formulario me renombra el nombre del primer registro al valor del ID que estaba seleccionado en la lista al salir.
En esto soy completamente inepta como verás, siento mucho tanta molestia! :$
Caramba!
Ahí sí que me has pillado. No entiendo porqué no puedes ver los registros. Si quieres, pásame la BD comprimida en un ZIP y le echo un vistazo, a ver qué podemos hacer.
Respecto de la segunda pregunta no entiendo bien qué quieres decir. Si te parece, en el correo me pones la pregunta con un poco más de detalle, y con algún ejemplo.
Mi mail es [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas