** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Consulta SQL con criterio de búsqueda via ComboBox
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConsulta SQL con criterio de búsqueda via ComboBox

 Responder Responder
Autor
Mensaje
Peter Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 27/Octubre/2005
Localización: Alemania
Estado: Sin conexión
Puntos: 280
Enlace directo a este mensaje Tema: Consulta SQL con criterio de búsqueda via ComboBox
    Enviado: 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
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5462
Enlace directo a este mensaje Enviado: 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:


Saludos.


Editado por VIMIPAS - 01/Febrero/2020 a las 00:42
Gracias
Arriba
Peter Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 27/Octubre/2005
Localización: Alemania
Estado: Sin conexión
Puntos: 280
Enlace directo a este mensaje Enviado: 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] & "*"

















Editado por Peter - 03/Febrero/2020 a las 15:45
Peter
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable