Buscar el resultado de una consulta en el formulario principal

Tengo una consulta que me busca los nombres de los alumnos de dos clases "Cocina" y "Panadería"

Quiero crear un botón de comando que al pulsarlo me muestre las relación de los alumnos de cada materia, que se muestren en el "Formulario Principal" que ya tiene sus campos y sus subformularios asociados.

Los campos son DNI (clave principal), Nombre (texto), Apellidos (texto), Clase (lee de un combo con las distintas clases), Materia (Cocina, Panadería, Comedor, Habitaciones...)

La consulta hace una búsqueda con los campos descritos en en el campo Materia he puesto el criterio "Cocina" Or "Panadería", mostrándome los nombres de los alumnos independientemente de la clase en que estén.

En el Formulario Principal he creado el Botón de Comando que he llamado "btnManipuladores"

He probado con una macro, en el evento, al click ; que recuerdo haberlo hecho así anteriormente, pero no consigo ningún resultado, He puesto en al abrir el formulario en el nombre del filtro con el nombre de la consulta, pero al ejecutar el botón de comando no consigo nada.

Alguna

Respuesta
1

La verdad, no me queda nada clara tu consulta ¿podrías dar más información de lo que quieres, qué has intentado...?

Si tan solo es filtrar los datos de esas materias en el formulario principal, puedes hacerlo de muchas formas, por ejemplo:

1º/ Aplicando un filtro al formulario:

Private Sub nombreBoton_Click()
Me.Filter="Materia='Cocina' OR Materia='Panadería'"
Me.FilterOn=true
End Sub

2º/ Cambiando el origen de datos del formulario a la consulta:

Private Sub nombreBoton_Click()
Me.Recordsource="NombreConsulta"
Me.Requery
End Sub

3º/ Lo mismo pero sin necesidad de tener guardada la consulta en la BD:

Private Sub nombreBoton_Click()
Me.Recordseource="SELECT * FROM TuTabla WHERE Materia='Cocina' OR Materia='Panadería'"
Me.Requery
End Sub

1 respuesta más de otro experto

Respuesta
2

Es de suponer que tendrás un formulario donde pones los datos de los alumnos y asignaturas. Pues, en ese formulario Principal puedes poner un combinado con origen de la fila en ese campo Asignatura. La ventaja de esto es que si aumentaran las asignaturas no tendrías que estar cambiando nada, ni en el código ni en las consultas. En el ejemplo al combinado lo llamo Elegir

Elijo una asignatura, en este caso país y

Private Sub Elegir_AfterUpdate()
DoCmd.OpenForm "clientes", , , "pais like '" & Me.Elegir & "'", , acDialog
End Sub

Hola de nuevo y perdón por la tardanza, pero estaba trabajando  y me ha sido imposible contestar.

Me funciona bien utilizando el combinado, pero me una duda? 

Podría seleccionar dos, tres o varios campos del combinado? Para que busque todos los registros a la vez.

Muchas gracias

Antes de nada déjame decirte que mi ordenador es un portátil, por eso las imágenes tengo que comprimirlas mucho.

Si tengo la tabla Clientes

Puedes ver que hay 93 registros con países diferentes.

Creo una tabla Auxiliar(solo sirve para delimitar los países ó asignaturas)

También, con ambas tablas hago una consulta llamada Aux

Con la tabla Clientes hago un formulario(da igual si es único o continuo, pero creo que éste último se vé mejor), donde le pongo un cuadro de lista con origen de la fila en los países de Clientes agrupados y con multiselección simple. También le pongo un botón( no sería necesario pero para el ejemplo es mejor)

En el cuadro de lista selecciono unos países.

Al pulsar el botón(recuerda lo de mi ordenador)

Sólo me saca los países elegidos.

El código del botón es

Private Sub Comando12_Click()
Dim julian As Variant
For Each julian In Me.Lista10.ItemsSelected
DoCmd.RunSQL "insert into paises(pais)values('" & Me.Lista10.ItemData(julian) & "')"
Next
Me.RecordSource = "select * from aux"
DoCmd.RunSQL "delete * from paises"
End Sub

Es decir, cuando pulsas el botón, pasa a la tabla Países los que hayas elegido. Luego le da origen al formulario los registros de la consulta y por último borra los registros de la tabla Países para quedar"dispuesta" para un "nuevo uso".

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas