** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Consulta desde formulario con varios parámetros
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConsulta desde formulario con varios parámetros

 Responder Responder
Autor
Mensaje
Jorge33 Ver desplegable
Habitual
Habitual


Unido: 09/Abril/2019
Localización: madrid
Estado: Sin conexión
Puntos: 58
Enlace directo a este mensaje Tema: Consulta desde formulario con varios parámetros
    Enviado: 22/Noviembre/2019 a las 12:29
Hola:

Tengo una consulta con varios parámetros que alimento desde un formulario. El problema que tengo es cuando quiero buscar por sólo uno de los parámetros en vez de por todos.
Por ejemplo desde el formulario alimento los campos nombre, fecha, dirección etc 
Si relleno en el formulario todos los campos funciona bien pero si sólo quiero buscar por uno o dos de ellos no funciona. ¿Como puedo hacer?

Muchas gracias
< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">
Arriba
Maverick2019 Ver desplegable
Habitual
Habitual


Unido: 10/Junio/2019
Localización: Madrid
Estado: Sin conexión
Puntos: 145
Enlace directo a este mensaje Enviado: 22/Noviembre/2019 a las 14:41
Hola
Una opción es crearte varias consultas con distintas configuración de parámetros (uno, dos, etc...) y llamarlas según tu necesidad.
Pero creo que lo más facil sería crearte una cadena con la consulta y construir al vuelo la cadena de criterios para pasársela. Sí tenesitas tener la consulta físicamente, borrala y genérala cada vez que la uses.

Salu2,
Arriba
Jorge33 Ver desplegable
Habitual
Habitual


Unido: 09/Abril/2019
Localización: madrid
Estado: Sin conexión
Puntos: 58
Enlace directo a este mensaje Enviado: 22/Noviembre/2019 a las 15:14

Gracias. No sé si te estoy entendiendo bien. ¿te refieres a algo así?

Select * from xxx

Where

Nombre=form:nombre and apellidos=form:apellidos and dirección=form:dirección

Or

Nombre=es nulo and apellidos=form:apellidos and dirección=form:dirección

Or

Nombre=form:nombre and apellidos=es nulo and dirección=form:dirección

Or

Nombre=form:nombre and apellidos= form:apellidos and dirección= es nulo

Or

Nombre=es nulo and apellidos=es nulo and dirección=form:dirección

…….

 

Si es así para muchos parámetros sería difícil de programar



Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14734
Enlace directo a este mensaje Enviado: 22/Noviembre/2019 a las 20:35
Lo que te estan diciendo es que creas la SQL por código y la asignas a una consulta.


(se asume declaración de variables)
strSelect = "SELECT * "
strtFrom = "FROM unaTabla "
strWhere = "WHERE 1=1 " ' O una condición irrefutable para iniciar la where

If Nz(Me!Nombre, "")<> "" Then
  strWhere = strWhere & "AND Nombre Like '*" & Me!Nombre & "' "
End If

If Nz(Me!FechaAlta, "") <> "" Then
  strWhere = strWhere & "AND FechaAlta = #" & Format(Me!FechaAlta, "mm/dd/yyyy") & "# "
End If

strSQL = strSelect & strFrom & strWhere

On Error Resume Next
DoCmd.DeleteObject acQuery, "MiConsulta"
On Error Goto 0
CurrentDb.CreateQueryDef "MiConsulta", strSQL

DoCmd.OpenQuery "MiConsulta"

Escrito al vuelo

Saludos
Xavi, un minyó de Terrassa

Mi web
Arriba
Jorge33 Ver desplegable
Habitual
Habitual


Unido: 09/Abril/2019
Localización: madrid
Estado: Sin conexión
Puntos: 58
Enlace directo a este mensaje Enviado: 25/Noviembre/2019 a las 14:11
Muchas gracias. Estoy aprendiendo mucho.
Tengo un par de dudas si puede ser:
- El poner #" & delante de la fecha ¿para que sirve?
- ¿Habría que añadir un strFIN para el ; del final del select?

< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14734
Enlace directo a este mensaje Enviado: 25/Noviembre/2019 a las 16:58
Para que las SQL "entiendan" los datos es necesario "delimitarlos" correctamente:
- Los números van "tal cual" con el problema que, al meter decimales, las comas no las entiende y es necesario realizar una sustitución
- Los textos van delimitados por " pero tambien tienen un problema en las SQL creadas por código y es que tienen un conflicto con el delimitador de cadenas de texto y es necesario sustituir " por ' (apóstrofe). Adicionalmente existe el problema de que la cadena de texto a insertar contenga " y ' con lo que el problema ya es considerable....
- Las fechas van delimitadas por # y en formato yanki (mm/dd/yyyy) por lo que es necesario realizar la sustitución.


Con el tiempo uno aprende cosas sobre las SQL:
- El; de cierre no es necesario
- Los paréntesis de la clausula WHERE solo son relevantes cuando tenemos operadores OR

Un saludo


Xavi, un minyó de Terrassa

Mi web
Arriba
Jorge33 Ver desplegable
Habitual
Habitual


Unido: 09/Abril/2019
Localización: madrid
Estado: Sin conexión
Puntos: 58
Enlace directo a este mensaje Enviado: 26/Noviembre/2019 a las 07:42
Entendido.
Muchas gracias
Funciona muy bien.
Se puede cerrar el tema.
< x="0" y="0" width="99999" height="99999" id="hc_extension_off">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast">< x="0" y="0" width="99999" height="99999" id="hc_extension_highcontrast_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_grayscale_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_back">< x="0" y="0" width="99999" height="99999" id="hc_extension_invert_grayscale">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black">< x="0" y="0" width="99999" height="99999" id="hc_extension_yellow_on_black_back">
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable