Cuadros combinados con cuadros de lista

Disculpa soy inexperto y deseo una ayuda: El 1er cuadro combinado esta referido ha ciudades, el 2do a las personas, y en el cuadro de lista nos señala en una consulta tanto la información del 1ero y 2do cuadro combinado. Mi pregunta es:¿Como hago, para que cuando solo elija una ciudad, me aparezca en el cuadro de lista tanto la ciudad como los nombres de las personas que viven ahí, ademas cuando selecciono solo el nombre de una persona, me aparezca en el cuadro de lista la ciudad y el nombre de la persona y cuando selecciono ambos cuadros combinados me aparezca la intersección en el cuadro de lista(tener en cuenta que dicha persona pueda vivir en más de una ciudad)

2 Respuestas

Respuesta
1
El cuadro de lista debe estar basado en una consulta sql que involucre las condiciones que planteas. Si cambias el CC1 luego hay una variable (la selección en el cc1) que debes pasarle a la consulta.
Ídem para el cc2.
Cuando los 2 tienen selección la sql debe enlazar las 2 condiciones.
Estas condiciones las debes cargar en Vb como "eventos" de "cambio" de los cuadros combinados.
Me parce buena la idea pero como hacer que a través de un CC(cuadro combinado) pueda modificar a un CL(cuadro de lista), (Ya que estoy trabajando con más de 5 CC enlazados al CL y no todos están activados)
Puedes hacerlo a través del origen de la fila del cuadro de lista, es una consulta sql que se puede referir al resultado de la selección de un cc determinado.
select * from tabla1 where condicion=forms.[formulario1].[cuadro combinado1]
En el caso de que no todos estén activos, cambias el sql desde vb a partir de los eventos de cambio del cc
Private Sub Cuadro_combinado0_Change()
[lista0].RowSource = "SELECT * from Tabla1 where campo1=" & [cuadro combinado0]
End Sub
Atentamente. Jorge
Disculpa, trabaje con al segunda parte de tu mensaje ya que me parece correcta. En vez de lista0 puse el de mi nombre de mi lista así como el cuadro combinado. Pero en el momento de seleccionar el cuadro combinado me sale un cuadro que me indica introduzca el valor en el parámetro. Por favor ¿en qué fallo? . Revise en la consulta pero no es ahí.
Vas en camino. Lista0 puse porque no se como se llama la que tienes tu, por ende no puedo adivinar, la corrección es correcta.
Verifica:
¿La tabla es tabla1?
¿El campo donde quieres buscar es campo1?
¿El dato a buscar en el campo es [cuadro combinado0]?
Para verificar el sql puedes hacer lo siguiente:
Private Sub Cuadro_combinado0_Change()
texto= "SELECT * from Tabla1 where campo1=" & [cuadro combinado0]
msgbox texto
End Sub
El texto te va a salir en un cuadro de aviso cuando cambies el cc.
Luego verifica que la sintaxis sea la adecuada.
Por Ej. si el cuadro combinado da un texto como resultado de la selección
el mensaje debe ser:
"Select * from tabla1 where nombre='Jorge'"
Si el dato es numérico
"Select * from tabla1 where altura=3200"
En el caso mio: Donde zona es texto
texto = "SELECT * from personal where personal.zona=" & [zona]
MsgBox texto
Y el mensaje sale:
SELECT * from personal where personal.zona=Lima-Sur
No se la falla. Gracias por el apoyo.
He probado con cuadro combinado(=CC) que indican valores no repetible: OK aquí no hay Error pero en mi caso dicho cuadro de lista(=CL) guarda varios valores repetidos: Lima-Sur. Mientras en el cuadro combinado NO. Es decir que cuando hago click en el CC me muestre varios Lima-Sur, ya que además estará indicando las direcciones que pertenece dicha zona,(Lima-Sur).
Gracias por el apoyo.
Para que los cc/cl tomen valores no repetidos debes incorporar la opción Distinct entre el SELECT y el * en los comandos SQL
Ej.
Select distinct * from ...
Ya se cual es mi error. El combo guarda elementos que son texto y es ahí donde sale error. Pero si son numeros="id" cuando pongo:
lista0.RowSource="SELECT * from personal where personal.id=" & [id]
Todo OK.
¿Cómo hago para usar en el caso de que sean texto en el cuadro combinado
Muchas gracias de antemano
Debes modificar el sql para agregarle las comillas ("'") es una simple (o apóstrofo) dentro de 2 dobles.
lista0.RowSource="SELECT * from personal where personal.id=" & "'" & [texto] & "'"
Saludos. Jorge
Respuesta
1
Enviame el archivo por e-mail para analizar tu inquietud y no olvides de enviarme el máximo de detalles del problema
Mi e-mail es: [email protected]
Ve al final de esta página y finaliza tu consulta
Juan
Muchas Gracias: Suplemento, tengo más de 3 cuadros combinados(CC) que deben interactuar con 1 cuadro de lista(CL). Hay una posibilidad que el filtro sea enviado desde el CC; y NO, como veo en diversos ejemplos de Sincronización, en las cuales el filtro está en el ultimo control(cuadro combinado o cuadro de lista).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas