Introducir parámetro en consulta a través de cuadro combinado

Aunque he leído e intentado ejecutar el hilo de este foro titulado "Uso del cuadro combinado en consulta de access" no consigo un resultado satisfactorio. Concretando, mi problema es el siguiente:

Tengo una tabla y quiero mediante cláusula WHERE obtener el recordset que cumpla la condición pero, eso sí, el parámetro para filtrar quiero introducirlo eligiendo desde un campo combinado. Concretando, tenemos:

Nota: Las comillas españolas no forman parte del nombre de los nombres. Sólo es para resaltarlos.

Tabla «Niñ» con numerosos campos.

Campos de la tabla «niñ» implicados en el problema: «Nom_niñ», «Ape_niñ» y «Gru_niñ»

Formulario « Form4» conteniendo:

Cuadro combinado «Combo0» desde el cual quiero pasar a la consulta el dato por el que filtrar y un botón para ejecutar la consulta que he llamado «Eje_con_gru_niñ»

Consulta que quiero ejecutar desde el formulario «Form4», pulsando el botón:

SELECT Nom_niñ, Ape_niñ  FROM  Niñ WHERE Gru_niñ= (parámetro que quiero pasar, eligiendo desde el cuadro combinado «Combo0»)

No os pongo lo que he hecho ni lo que pone el hilo para no dirigiros hacia un enfoque equivocado del problema; pero, básicamente, he hecho lo que pone en el hilo adaptándolo a mi caso y, se ejecuta la consulta, pero vacía. Por cierto, en el hilo tampoco queda resuelto.

Como siempre.

1 respuesta

Respuesta
2

Vamos a suponer que el combinado se llama ElegirGru, y en sus propiedades-Tipo Origen de la fila, has puesto Lista de valores y en Origen de la fila has puesto, por ejemplo, 1A;2B;3C...

En el evento Después de actualizar puedes poner

me.recordsource=select * from Niñ where Gru_niñ = '" & me.elegirgru & "'"

Así, cuando elijas un valor en el combinado, el origen de registros del formulario serán aquellos de la tabla Gru_niñ cuyo grupo coincida con el que has elegido.

Por el contrario, vamos a suponer que en Tipo Origen de la fila has dejado Tabla/consulta y en Origen de la fila tienes puesto

Select Gru_niñ from Niñ group by gru_niñ;

El código del evento Después de actualizar es el mismo.

Hola, Icue. Por cierto, el otro día se me olvidó decirte que le des recuerdo a la "Peñica", como decís por ahí. Estuve viviendo 5 maravillosos años allí, al lado de la antigua fábrica del licor 43. Algún día volveré, aunque sea de visita. Allí nació mi hijo.

Volviendo al tema. No acabo de entender tu respuesta.

Así, a grandes rasgos, tengo:

  • Un formulario que contiene:
    • Un combo.
      • Origen de la fila: SELECT Con FROM Cre_gru_niñ ORDER Con.
        • «Con» es un campo de la tabla «Cre_gru_niñ» que contiene los grupos.
      • Tipo de origen de la fila: Tabla/Consulta.
      • Con esto, el combo me da a elegir entre los distintos grupos.
      • Lo he probado y, hasta aquí, sin problemas.
    • Una sentencia SQL, ya hecha, que figura en el navegador, a la que le tengo que pasar el valor del combo. La sentencia es:
      • SELECT Nom_niñ, Ape_niñ FROM Niñ WHERE Gru_niñ = (dato del combo).
      • Este es el problema. ¿Cómo le paso el valor del combo a la cláusula where?
      •  me.recordsource=select * from Niñ where Gru_niñ = '" & me.elegirgru & "'"  , por lo que he leído en la red, creo que establece el origen de los datos del formulario, pero no veo que le pase ningún dato a la sentencia ni creo me sirva para nada. No ´sé, igual estoy equivocado. El caso es que lo he probado y no me funciona.
    • Un botón para dar la orden de que corra la sentencia y se muestre por pantalla o por impresora. Este botón se podría sustituir por un código tipo:
      • DoCmdRunSQL " SELECT * FROM Niñ WHERE Gru_niñ = ¿¿.........?? en el evento "Después de actualizar".

Como siempre, gracias anticipadas.

Primero, tengo que decirte que la fábrica está abandonada. Se trasladaron a Los Camachos. De hecho quieren construir viviendas nuevas.

Por otro lado, para no tener que crear tablas y rellenar datos voy a usar la tabla Clientes. Supongamos que tengo un formulario(da igual si es único o continuo, pero así se ve mejor)

Le he añadido el combinado al que en sus propiedades-Otras-Nombre le he puesto ElegirPais. En sus propiedades-Datos-Origen de la fila tengo puesto

Lo de group es para no no me repita los países.

En las propiedades del combinado, en Eventos-Después de actualizar he creado un procedimiento de evento y entre Private Sub y End sub he puesto

Private Sub ElegirPais_AfterUpdate()
Me.RecordSource = "select * from clientes where pais='" & Me.ElegirPais & "'"
End Sub

Pongo * porque aunque la tabla tiene más campos, el formulario sólo me mostrará los controles que hay en él.

Si elijo España

El resultado

Si ahora elijo Italia

Es decir, me va mostrando aquellos registros en que el país sea igual al que he elegido.

Bueno, entonces, el mercado de Santa Florentina ni te cuento. Seguro que tampoco existe. Según he oído no tiene nada que ver con la Cartagena que yo conocí. Claro, después de tantos años,...

Bueno, no consigo que funcione. La lista se despliega, pero sin lista. y te aseguro que el origen de la fila está bien puesto: SELECT Gru_niñ FROM Niñ GROUP BY Gru_niñ; 

Y en el evento:

Private Sub Ele_gru_AfterUpdate()
Me.RecordSource = "select * from Niñ where Gru_niñ = '" & Me.Ele_gru & "'"
'DoCmd.OpenQuery "Consulta6"
End Sub

He copiado y pegado con el ratón.

La segunda línea de código la copié, después de haber probado, de un hilo tuyo, la he probado por separado y funciona, pero tengo que elegir a ciegas, ya que el combinado se me despliega en vacío. Estoy sospechando que sea el campo Gru_niñ, que lo relleno con un UPDATE que uso para concatenar nombre, día, hora y sala, que es lo que hace a un grupo único.

Bueno, yo ya no puedo más. llevo con esto desde las 10 de la mañana.

Buenas noches y gracias por todo. No cierro el hilo, porque quiero seguir haciendo pruebas.

Un saludo.

El mercado sigue.

Vamos por partes. La primera parte del código es para que te lo muestre en el formulario. Si vas a usar lo de Docmd. Openquery, entonces sobraría lo anterior, en la consulta, en la casilla criterio, debajo del campo Pais deberías poner

Como forms! Nombredelformulario! Elegirpais

Entonces, cuando en el combinado elijas un país, se abrirá la consulta y se "usara" el país que has elegido como criterio.

De tosas formas, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un par de ejemplos. Si lo haces, en el asunto del mensaje pon tu alias Juan Trillo, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas