Buscar en formulario con cuadro combinado

No se si me explicaré bien pero el quebradero de cabeza es el siguiente:
Esto se desarrolla dentro de un formulario
Busco por medio de un cuadro combinado, que ha su vez este pertenece a una consulta que agrupa los autores de libros de cocina. La consulta me dice los nombres de autores y las recetas que tine cada uno. Ej martin Berasategui - 21 Esta consulta la tengo echa
Este es el problema
Lo que yo quiero es que al desplegar el cuadro combianado y selecciones Ej Martin Berasategui, me seleccione en el formulario sólo a él y sus recetas, que son 21
Se que se puede hacer, pero no con asistente y con los códigos o las macros no estoy muy puesto.

1 respuesta

Respuesta
1
Para hacer lo que quieres voy a hacer un par de suposiciones, dado que no tengo los datos.
- El cuadro combinado donde buscas los autores yo lo llamaré "cboBusca". Doy por supuesto que el valor que almacena es el nombre del autor (tipo texto).
- En el formulario el campo que recoge el nombre del autor lo llamaré "Autor"
- El formulario de trabajo yo lo llamaré "FRecetas"
Tú sólo debes cambiar esos nombres que yo he supuesto por los que tú tengas en la BD.
Vamos allá:
- En vista diseño, coges el cuadro combinado de búsqueda y sacas sus propiedades. Te vas a la pestaña "Eventos" y haces click en el espacio en blanco que hay a la derecha del evento "Después de actualizar". Te saldrá un pequeño botoncito con puntos suspensivos. Haces click sobre él y te saldrá una ventana. Le dices que quieres generar código.
- En la nueva pantalla que te aparece le pegas el siguiente código:
---
Private Sub cboBusca_AfterUpdate()
    Dim valorBusca As Variant
    valorBusca = Me.cboBusca.Value
        'Comprobamos que existe valor en el combo.
        'Si no hay valor da un mensaje de error y
        'sale del procedimiento
    If IsNull(valorBusca) Then
        MsgBox "No hay ningún dato a buscar"
        Exit Sub
    End If
        'Filtra el formulario en función del valor
        'introducido en el combo
    DoCmd.OpenForm "FRecetas", , , "[Autor] = '" & valorBusca & "'"
End Sub
---
Y ya está.
Ya me dirás cosas si tienes algún problema.
Buenas nocjhes de nuevo.
Estoy muy agradecido por tu contestación pero no le saco zumo a esta fruta
Voy a intentar explicarme un poco mejor por ver si existe otra alternativa
Cree una consulta con los campos IdReceta (autonumérico), Autor (texto), y con la E de totales agrupe. Creo una exprexión "Expr1:[Autor]&" -"&Cuenta([IdReceta]). Entonces obtengo el resultado de los autores y recetas que tiene cada uno en un sólo campo. Ej martín Berasategui - 7 (Martin Berasategui tiene 7 recetas)
Dicho esto, esta consulta siempre tendrá valores de búsqueda"autores y cantidad de recetas" . Me voy al formulario y quiero crear un cuadro combinado de esta consulta "AUTORESmasRECETAS" Y que en el formulario al desplegar el cuadro combinado me salga la lista de la consulta con los autores y el número de sus recetas. Yo quiero pulsar sobre uno de los campos del menú desplegable y que me lo filtre en el formulario quedando unicamente el autor con sus recetas y que cuando vuelva a pulsar me filtre por otro autor distinto para poder ver sus recetas.
Menudo rollo te he echado, espero que lo entiendas si me puedes echar de nuevo un cable sería genial. De todas las maneras te agradezco enormemente tu interés. Gracias
OK. Necesito que me digas una cosa.
De ese cuadro combinado con el que buscas, sacas sus propiedades y te agradecería me dijeras qué te pone en las siguientes propiedades:
Pestaña Formato-> Número de columnas
Pestaña Formato-> Ancho de columnas
Pestaña Datos-> Origen de la fila
Pestaña Datos-> Columna dependiente
Basta que vayas copiando los valores y me los pegas.
Por cierto, mañana tengo que irme de viaje y no vuelvo hasta el viernes noche. Como probablemente no tendré conexión te ruego tengas un poco de paciencia si no podemos resolver esto durante el día de hoy.
Buenas noches
Mira estos son los datos que me has pedido
Pestaña Formato - Número columnas ... 1
Pestaña Formato - Ancho columnas... 2,54 cm
Pestaña Datos - Origen de la fila...
SELECT [AUTORESmasRECETAS].Expr1 FROM [AUTORESmasRECETAS] ORDER BY [Expr1];
Pestaña Datos - Columna Dependiente... 1
El cuadro combinado es cuadro combinado69 y el nombre del formulario se llama COCINEROS.
Gracias de nuevo, y por la espera no te preocupes, todos tenemos nuestras obligaciones y es comprensible.
Saludos
OK. No te funciona porque el combo está filtrando un campo que en el RowSource no existe. Prueba de hacer una cosa:
Borra ese combo que tienes y crea uno de nuevo. Con el asistente eliges esa consulta que me comentas y añades los campos "Autor" y "Expr1" (por este orden). Sigues hasta crear el combo.
Cuando lo tengas te vas a las propiedades de ese combo y cambias lo siguiente:
-Pestaña Otros->Nombre: escribes (sin comillas): "cboBusca"
-Pestaña Datos->Columna dependiente: 1
-Pestaña Formato-> Número de columnas: 2
                             -> Ancho de columnas (sin comillas): "0cm;2,54cm"
-Pestaña Eventos->Después de actualizar: le asignas el código que te pasé en un mensaje anterior (ese de Private Sub cboBusca_AfterUpdate()
Recuerda que debes adaptar la línea DoCmd..., que por lo que me comentas debería quedar así:
DoCmd.OpenForm "COCINEROS", , , "[Autor] = '" & valorBusca & "'"
El origen de la fila debería salirte una cosa así:
SELECT [AUTORESmasRECETAS].Autor, [AUTORESmasRECETAS].Expr1 FROM [AUTORESmasRECETAS] ORDER BY [Expr1];
Te explico: el número de columnas es dos porque tienes dos campos (en negrita); la primera (Autor) no se te mostrará porque su tamaño es 0cm, pero sí será el valor que se almacenará (aunque tú no lo veas) porque le has dicho que la columna dependiente es la 1.
Si por casualidad el asistente va "por su cuenta" y, aunque tú no se lo hayas seleccionado (a veces lo hace), te incluye la clave principal tendrás que hacer un pequeño cambio. Para saber si el asistente te ha hecho la pirula te vas al origen de la fila y verás que habrá escrito algo así:
SELECT [AUTORESmasRECETAS].IdReceta, [AUTORESmasRECETAS].Autor, [AUTORESmasRECETAS].Expr1 FROM [AUTORESmasRECETAS] ORDER BY [Expr1];
Lo que tienes que hacer es exactamente lo que te he comentado más arriba en la configuración de las propiedades del combo, y en el origen de la fila le borras esa parte que te he marcado en negrita en esta última sql.
Ya me dirás que tal te ha ido. Y, ahora, al aeropuerto! ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas