Uso de valores de cuadro de lista en consulta-Access2007
Estoy intentando ejecutar una consulta definiendo uno de los parámetros en función de los valores que obtengo en un cuadro de lista filtrado mediante un cuadro combinado.
En la consulta en cuestión, escribo el criterio [Forms]![DuplicadoPiezas]![REFERENCIA] en la columna PIEZA-REFERENCIA para que me filtre en la consulta los valores de todas las piezas que tengan las referencias indicadas en el cuadro de lista, pero la consulta me sale vacía.
He intentado también escribiendo [Forms]![DuplicadoPiezas]![REFERENCIA].Value pero tampoco funciona.
1 Respuesta
Comprueba que el valor que te devuelve el cuadro de lista es el mismo que tienes en la consulta en el campo PIEZA-REFERENCIA, pues pudiera ser (según como lo hayas configurado) que devuelva otro valor, por ejemplo un identificador...
Gracias por responder tan rápido. El valor proviene del mismo campo. En el cuadro de lista me salen los valores que selecciono mediante una consulta de unión de piezas y conjuntos, cuyo origen es la misma tabla en la que baso la consulta posterior.
Saludos,
Ainhoa
De hecho, cuando ejecuto la consulta sin especificar ningún criterio de selección en la columna PIEZA-REFERENCIA sí funciona, pero claro, me devuelve todos los registros.
Lo que intento es filtrar los registros y limitarlos a los valores que indica el cuadro de lista.
Saludos,
Ainhoa
Ponme aquí cual es el origen de la fila del cuadro de lista (propiedades->Pestaña Datos->origen de la fila)
Hola de nuevo, este es el origen del cuadro de lista:
select listadoreferenciasdesglosado.conjunto, listadoreferenciasdesglosado.referencia from listadoreferenciasdesglosado where ((listadoreferenciasdesglosado.referencia)=[formularios]![duplicadopiezas]![referenciaaduplicar]); union select listadoreferenciasdesglosado.pieza, listadoreferenciasdesglosado.referencia from listadoreferenciasdesglosado where ((listadoreferenciasdesglosado.referencia)=[formularios]![duplicadopiezas]![referenciaaduplicar]
Esta consulta funciona bien y devuelve las referencias correctas. Lo que yo pretendo es utilizar las referencias que devuelve esta consulta en otra consulta.
¿Es demasiado complejo?
Gracias de antemano por tu ayuda.
Saludos,
Ainhoa
Tu cuadro de lista, como yo intuía, no devuelve el valor que quieres (PIEZA-REFERENCIA), sino que devuelve solo el valor del campo "conjunto" o "pieza", y además muestra en su otra columna el valor del campo "referencia". Esto lo puedes comprobar fácilmente si, por ejemplo, en el evento después de actualizar del cuadro de lista pones este código: MsgBox Me. REFERENCIA
Habría varias maneras de solucionarlo, pero empieza por probar cambiando el origen del cuadro de lista por este otro:
select listadoreferenciasdesglosado.conjunto & "-" & listadoreferenciasdesglosado.referencia AS [PIEZA-REFERENCIA] from listadoreferenciasdesglosado where ((listadoreferenciasdesglosado.referencia)=[formularios]![duplicadopiezas]![referenciaaduplicar]); union select listadoreferenciasdesglosado.pieza & "-" & listadoreferenciasdesglosado.referencia AS [PIEZA-REFERENCIA] from listadoreferenciasdesglosado where ((listadoreferenciasdesglosado.referencia)=[formularios]![duplicadopiezas]![referenciaaduplicar]
Con este cambio tu cuadro de lista ya solo devuelve un valor, el combinado de los dos campos anteriores. (No te olvides de modificar las propiedades del cuadro de lista para poner que el número de columnas es 1, y ajustar su ancho)
He supuesto que en tu consulta el campo lleva un "-" entre lo que corresponde a PIEZA y lo que corresponde a REFERENCIA. Si no fuera así, tendrías que cambiarlo en el select de arriba.
Un saludo, Ainhoa
Gracias por tu contestación, pero creo que me he explicado mal. El cuadro de lista funciona perfectamente, me devuelve los valores correctos que necesito. Lo que yo quiero, es utilizar los valores de este cuadro de lista como criterio en otra consulta, pero al ser una lista de valores, no funciona. Es decir, que en otra consulta, me busque los resultados de las piezas seleccionadas en el cuadro de lista. No sé si me explico bien.
Saludos,
Ainhoa
A ver, que no nos entendemos...
Con esto como origen del cuadro de lista: select listadoreferenciasdesglosado. Conjunto, listadoreferenciasdesglosado. Referencia
Vas a tener un cuadro de lista con dos columnas: conjunto y referencia.
Dicho cuadro de lista solo devuelve 1 valor con su propiedad Value (o conjunto o referencia), y es el que corresponde con la columna que le pongas como columna dependiente (por defecto la primera: conjunto).
Para que devuelva el otro valor, o le modificas esa propiedad, o trabajas con su propiedad Column(indice). Así, Me. NombreCuadroLista(1) te devolverá la segunda columna (en tu caso referencia).
En tu consulta tienes el campo PIEZA-REFERENCIA, y por el tipo de select que tienes en tu cuadro de lista, entendí que viene de la unión de dos campos (pieza y referencia). Las otras posibilidades son que muestre el valor del campo conjunto o el de referencia.
Por tanto, o modificas el origen del cuadro de lista, o su columna dependiente o el criterio según lo que te explico arriba...
¿Puedes poner imágenes de los valores del campo de la consulta PIEZAS-REFERENCIA, la vista diseño en que se vea ese capo, y una imagen con los valores que muestra el cuadro de lista? O si prefieres pásame una copia de la BD con los elementos implicados en al consulta a:
Gracias por tu tiempo y ayuda. A ver, te explico, es un tema sencillo pero complejo a la vez.Un conjunto se compone de una o más piezas. La consulta de unión me une la referencia de conjunto y la referencia de pieza. y me muestra un listado con todas las referencias implicadas en un conjunto que le indico en un cuadro combinado.
Lo que yo pretendo, es utilizar los valores resultantes en ese cuadro de lista para que al duplicar sólo 1 pieza, me ejecute varias consultas en las que la referencia sean las indicadas en el cuadro de lista. Hay que tener en cuenta que un conjunto puede tener varias piezas relacionadas con él mismo.
Te podría enviar una copia de la base de datos, pero pesa mucho.
No sé si me explico, pero gracias por tu paciencia.
Saludos,
Ainhoa
Creo que será mejor que me envíes la BD, pero no hace falta que me la envíes toda: con tal de que tenga las tablas mínimas par que la consulta y el formulario funcionen, y por supuesto, la consulta y el formulario. Tampoco necesito todos los registros, con que pongas 4 o 5 de prueba es suficiente.
Si prefierenes enviarla entera, hazlo comprimida, o súbela a filebig.net (o dropbox, onedrive...) y me envías el enlace de descarga
Buenas tardes,
Perdona el retraso. Te envío la BD desde mi correo de empresa.
Gracias y un saludo.
Ainhoa
O yo no entiendo tu BD, o no veo el problema, porque hasta ahora, a mi sí me filtran las consultas por los valores del cuadro de lista (una vez que le cambio la referencia en las consultas)
Y que todo tenga nombres tan parecidos, no facilita las cosas...
Viendo que seleccionado un valor en el cuadro de lista sí funciona, me pregunto ¿por casualidad no querrás seleccionar varios valores en la lista y actualizarlos todos "de una tacada"?
Si es así, tendrás que hacerlo por código, no conozco la forma de hacerlo directamente en la consulta. Te dejo un ejemplo en el que tiene explicado el código que necesitas (adaptándolo un poco) para crear el criterio de filtrado, que será parecido a:
IN (Valor1, Valor2...)
https://dl.dropboxusercontent.com/u/7400954/WebAccess/Pdf/EjemplosFormularios/FormularioBuscadorAlTecleo.pdf
Lo que tienes que hacer es coger todos los items seleccionados, construir con ellos el criterio, y ejecutar la SQL de la consulta (con el criterio) desde VBA:
CurrentDb.Execute "INSERT INTO..... WHERE (((CONJUNTOS.[CONJUNTO-REFERENCIA]) In (....)"
Siento no poderte ayudar más, pero no le puedo dedicar mucho más tiempo a esta consulta.
¡Gracias por tu ayuda y tu tiempo! Eso es exactamente lo que quiero hacer, coger varios valores del cuadro de lista que tengo ya filtrados con el cuadro combinado y aplicarlos a las consultas de duplicación. voy a echar un vistazo al código que me has indicado y espero poder resolverlo. No pretendo molestarte ni robarte más tiempo del que ya me has dedicado.
¡¡¡Muchísimas gracias de nuevo!!!
Saludos,
Ainhoa
- Compartir respuesta