Imprimir página | Cerrar ventana

Consulta SQL con criterio de búsqueda via ComboBox

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84980
Fecha de impresión: 27/Marzo/2026 a las 06:03


Tema: Consulta SQL con criterio de búsqueda via ComboBox
Publicado por: Peter
Asunto: Consulta SQL con criterio de búsqueda via ComboBox
Fecha de publicación: 31/Enero/2020 a las 16:54
Hola amigos.

Se trata de una consulta de selección que quiero realizar con la herramienta Seleccionar (Herramientas de Consulta)

Sea una tabla [00_MasterData] con campos "Opportunity ID" y "Status"
Sea un formulario "0_Home" que contiene un combobox llamado "Cmb_Status" (Cmb, para acortar)(cuyos valores están en otra tabla. El Cmb funciona ok)
Tengo la siguiente consulta que funciona ok:

SELECT [00_MasterData].[Opportunity ID], [00_MasterData].Status
FROM 00_MasterData
WHERE ((([00_MasterData].Status)=IIf(([Formulare]![0_Home]![Cmb_Status])="(All)","Won",[Formulare]![0_Home]![Cmb_Status])));

Esta consulta logra que cuando en el Cmb se selecciona un valor "(All)" se muestren todos los registros con valor "Won" (parece tonto, pero es para poder explicar mi duda)
Si el valor seleccionado fuera diferente a "Won", se muestran como resultado los registros que contienen el valor que esté seleccionado en la Cmb (Este valor podría ser "Lost", por ejemplo)


Pregunta:

¿Qué debo escribir como criterio de búsqueda en la sentencia SQL para que cuando la selección en el Cmb sea (All) se muestren todos los valores de la tabla?

Ver abajo los signos de interrogación

SELECT [00_MasterData].[Opportunity ID], [00_MasterData].Status
FROM 00_MasterData
WHERE ((([00_MasterData].Status)=IIf(([Formulare]![0_Home]![Cmb_Status])="(All)","??????",[Formulare]![0_Home]![Cmb_Status])));

¿Qué debo poner en lugar de estos signos de interrogación?

He intentado con "", con " ", con "*"... pero nada me ha funcionado.

Muchas gracias por sus respuestas. Seguro que la respuesta es muy sencilla

-------------
Peter



Respuestas:
Publicado por: VIMIPAS
Fecha de publicación: 31/Enero/2020 a las 19:17
Buenas noches.

Aquí explicaba yo como conseguir eso (según la forma que planteaba el preguntante del hilo que pondré a continuación). Tal vez si pudieras aplicar lo mismo a tu ejemplo (cambiar All por el vacío que se explica en mi respuesta, es decir: pulsar la tecla Intro - sin mas- equivale en mi ejemplo a tu All).

Este es el hilo en cuestion:

http://www.mvp-access.com/foro/consulta-con-casilla-de-verificacin_topic84895.html?KW=" rel="nofollow - http://www.mvp-access.com/foro/consulta-con-casilla-de-verificacin_topic84895.html?KW=

Saludos.


-------------
Gracias


Publicado por: Peter
Fecha de publicación: 03/Febrero/2020 a las 15:09
Hola Vimipas.

Muchas gracias por tu respuesta. Realmente sencilla y eficiente.
Adapté tu respuesta a mi problema, que se ha solucionado.
El cómo adapté tu idea lo trato de describir a continuación por si alguien necesita en el futuro algo similar:

Nombre del Formulario =   0_Home   
Nombre del ComboBox ubicado en el formulario=  Cmb_Status

Tabla con valores para el ComboBox (w_Status)

Yo deseaba que "vacío" aparezca como opción a elegir en el ComboBox, lo cual logré así:
El campo ID permite introducir un valor vacío (ID_Status=1) en el campo Status, de esta forma, en el combobox que coge datos de esta tabla, muestra una opción vacía. que puede seleccionarse. Los siguientes registros contienen un texto tal como se puede ver en la tabla:

w_Status

ID_Status Status
1  
2 In Process
3 Lost
4 Open
5 Stopped
6 Won

Tabla 00_MasterData    --->    Tabla con datos a filtrar via Combobox en formulario y consulta. En mi caso, la tabla tiene varios campos y miles de registros, así que esto va sólo a manera de ejemplo:

00_MasterData

Opportunity ID Status
100 Lost
101 Stopped
1028 Won
1184 In Process
2123 Open
102 Lost
101 Stopped
1015 Won
1180 In Process
2021 Open


Consulta (SQL)        --->    Esta es la consulta donde se muestran los datos filtrados
               
    SELECT [00_MasterData].[Opportunity ID], [00_MasterData].Status           
    FROM 00_MasterData           
    WHERE ((([00_MasterData].Status) Like "*" & [Formulare]![0_Home]![Cmb_Status] & "*"));           
               
               
    La consulta, activada por un botón en el formulario 0_Home, toma como criterio de selección al contenido del combobox           
    que se encuentra en el mismo formulario           
    PS: [Formulare] es la designación en alemán de formulario. Es que trabajo con una versión en este idioma.           
               
    La consulta, usando la herramienta de consulta, tendría más o menos esta forma:   
Campo Opportunity ID                   Status
Tabla 00_MasterData            00_MasterData
Criterio   Wie "*" & [Formulare]![0_Home]![Cmb_Status] & "*"

















-------------
Peter



Imprimir página | Cerrar ventana