Cuadro combinado

Hola, quería realizar un cuadro combinado sobre clientes.
Tengo una tabla, en el mismo campo tengo el nombre y apellidos de los clientes.(Pedro Perez, Juan Martinez,...)
En el cuadro combinado quiero preguntar por Pedro y que me salggan todos los Pedros que tenga en la lista.

1 respuesta

Respuesta
Supongo que la tabla se llama Clientes y el campo Nombre.
En el formulario un cuadro combinado que llamaremos selNombre, en origen de la fila pondrías:
SELECT Left([nombre],InStr([nombre]," ")-1) AS NombreCorto FROM Clientes GROUP BY Left([nombre],InStr([nombre]," ")-1) ORDER BY Left([nombre],InStr([nombre]," ")-1);
Te explico, la función InStr() devuelve la 1ª posición de la cadena buscada en el campo en el que hacemos la búsqueda:
InStr([Nombre];" ") 
Nos devuelve la 1ª posición en que encuentra un espacio.
La función Left() nos devuelve tantos dígitos empezando por el 1º de la izquierda como queramos, por ejemplo Left([Nombre];3) nos devolvería los 3 primeros dígitos de la izquierda. Uniendo las dos funciones tendríamos los nombres que queremos visualizar en el cuadro combinado.
Creamos un cuadro de lista que llamaremos Lista2.
En las propiedades del cuadro combinado selNombre, en la acción Al hacer clic ---> Procedimiento de evento ---> Ponemos el código:
Private Sub selNombre_Click()
Me.Refresh
Dim vNombre As String
vNombre = Form!selNombre.Value + "*"
Form!Lista2.RowSource = "select Nombre From clientes where Nombre like '" & vNombre & "'"
Me.Refresh
End Sub
De esta forma cada vez que hagamos clic en un nombre se actualiza el cuadro de lista.
Hola, me has dado la idea que necesitaba en cuanto al cuadro combinado.De todas formas mi base es un poco más compleja (o más simple, como lo veas) en cuanto a los nombres, es decir, puede haber un Juan Pedro y quiero que me salga en la selección Pedro, la programación que tú me das sólo elige los que empiezan por Pedro, además tengo nombres con comas intermedias, por ejemplo: "Juan, Pedro, María Nieto" y necesito seleccionarlo cuando elijo Pedro en el cuadro combinado. Precisamente porque tenía muchos nombres de clientes diferentes no podía separar en campos diferentes, por eso decidí poner nombre y apellido en el mismo campo, si no tendría múltiples campos en un registro y uno sólo o vacíos en otros registros, por ejemplo. A la hora de filtrar en la tabla es sencillo pero no soy capaz de reproducirlo en una consulta para un cuadro combinado. Si quiero sólo una consulta para Pedro, Ok, hago una consulta y en el campo Nombre elijo Como"*Pedro*", pero si quiero una consulta seleccionando los nombres de una lista no me sale.
Podrías sustituir el cuadro combinado por un cuadro de texto en el que escribas por ejemplo Pedro y en la lista te salgan todos los registros que CONTENGAN la palabra Pedro.
Llamamos al cuadro de texto selNombre, podríamos poner el siguiente código en la acción Al perder el enfoque de este cuadro de texto:
Me. Refresh
Dim vNombre As String
vNombre = "*"+Form!selNombre.Value + "*"
Form!Lista2.RowSource = "select Nombre From clientes where Nombre like '" & vNombre & "'"
Me. Refresh
Yo creo que podría hacerse con un cuadro combinado pero me falta saber la programación. Creo que en algún sitio del cuadro combinado, ya sea en los eventos o en el origen de la fila tendría que poner algo como:
Select nombre from clientes
where nombre like "*nombre*"
Claro que estará mal escrito y parece rebundante.
Un ejemplo de mi tabla:
Tabla-> Campos-> Nombre/Gasto/Cantidad
Ejemplos registro de la tabla:
Juan Rodriguez/Anual/20
Juan Pérez/Mensual/10
María,Juan, Luis Nieto/Mensual/42
Pedro Juan Martinez/Anual/
En un formulario poder seleccionar con un cuadro combinado los siguientes nombres (listado):
[+] Juan/Pedro/María/Jose
Y que en el subformulario me salgan los datos Gasto y Cantidad del nombre seleccionado.
Supongo que Juan/Pedro/María... son los valores de la lista del cuadro combinado que llamaremos selNombre, en la acción al hacer clic de este cuadro combinado:
Private Sub selNombre_Click()
Me.Refresh
Forms!Formulario5![Subformulario TablaNombres].Form.RecordSource = "SELECT Nombre, Cantidad, Gasto FROM TablaNombres WHERE Nombre like '*" & Form!selNombre.Value & "*'"
End Sub
Es decir ponemos el origen del registro del subformulario desde esta acción.
Me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas