** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Error en los criterios de una consulta
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Error en los criterios de una consulta

 Responder Responder
Autor
Mensaje
letoy Ver desplegable
Nuevo
Nuevo


Unido: 15/Noviembre/2008
Localización: España
Estado: Sin conexión
Puntos: 15
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita letoy Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Error en los criterios de una consulta
    Enviado: 29/Agosto/2019 a las 22:10

Este tema fue cerrado anteriormente porque creía que estaba resuelto al no dar error de sintaxis con el ejemplo de Xabi. No da error, pero sigue sin mostrar los registros con campos sin contenido.

Lanzo de nuevo la consulta pues no he encontrado la forma de desbloquear la consulta anterior, por lo que no se si de forma correcta vuelvo a lanzar la misma consulta.

 

 

Hola muy buenas.

 

Mi problema es que tengo un subformulario con un campo en una tabla que se llama “observaciones” tipo texto con 255 caracteres.

Cuando voy a hacer una consulta desde el campo de texto “obsevaciones”sobre ese campo utilizo el siguiente criterio en consultas:

 

Como "*" & [Formularios]![Diario Recordatorios]![Observaciones] & "*"

 

Si el campo tiene texto y cumple el criterio, funciona perfectamente.

 

Pero si dejo en blanco el campo observaciones del formulario, muestra todos los registros de la tabla que tienen texto sea el que sea, como es logico, pero los registros que no tienen texto no los muestra ¿por que no los incluye?.

 

En resumen mi objetivo es que muestre los que cumplen el criterio, y si dejo el campo de texto sin contenido en el formulario, la consulta debe de mostrar todos los registros de la tabla tengan texto o no.

He puesto diferentes cosas en el criterio O como Es Nulo, "", etc pero no funciona.

Me podriais ayudar 

Un saludo.

 

Ha este tema me contestaron Xabi y Mihura y me apuntaron que pusiera el siguiente código

"*" & nz([Formularios]![Control Emisiones]![Cuadrocliente];"") & "*"

Pero sigue sin mostrar los registros que tienen el campo sin contenido, como ocurria cuando yo empleaba el código puesto anteriormente.

 

Muchas gracias.

 

 

Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5246
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita VIMIPAS Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 29/Agosto/2019 a las 22:20
Hola, buenas noches.

¿Puedes probar esto?:

"* ' " & nz([Formularios]![Diario Recordatorios]![Observaciones];"") & " ' *"

Y además en la consulta, en el campo de la consulta que toque, ¿puedes poner también el Nz, así:?

Nz(campoconsultaqueteocupa)

Ya nos cuentas.

Saludos.
Gracias
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5246
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita VIMIPAS Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 29/Agosto/2019 a las 22:29
Hola de nuevo.

Que soy un enamorado de las "búsquedas" creo que por aquí lo saben todos, y es por ello que te propongo que veas un ejemplo mío (de los muchos que tengo subidos a este foro en "Tus Funciones Favoritas"):


Tómatelo con calma y desmenúzalo, sin prisa, ahí tengo como buscarlo todo, absolutamente todo.

Evidentemente, tu caso no está, pues no era el objeto de ese estudio el ejemplo que te he puesto, pero si quieres podemos adentrarnos en él (tu caso) cuando termines con esto y vemos a ver como podría quedar resuelto y así serviría para posteriores casos como el tuyo.

Saludos.
Gracias
Arriba
letoy Ver desplegable
Nuevo
Nuevo


Unido: 15/Noviembre/2008
Localización: España
Estado: Sin conexión
Puntos: 15
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita letoy Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 29/Agosto/2019 a las 23:05
Hola Vimipas 

He puesto el siguiente código 

"*'" & Nz([Formularios]![Control Emisiones]![CuadroCliente];"") & "'*"

Pero la consulta no muestra ningún registro.

Lo de poner

 Nz([Formularios]![Control Emisiones]![CuadroCliente])

ya lo hice antes pero da error de sintaxis

Gracias.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5226
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita mounir Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 29/Agosto/2019 a las 23:09
Hola!
Lo que puedes hacer es copiar la SQL de la consulta con criterio y sin el y según se necesite se asigna al origen del registro del formulario y problema solucionado.

Editado por mounir - 29/Agosto/2019 a las 23:10
Un Saludo.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11092
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 29/Agosto/2019 a las 23:17
Letoy, que lío te estás montando con la construcción de cadenas ...

el argumento es así:

... LIKE '*valor*'

es decir la comilla simple va por fuera de los asteriscos.

Después cambias el valor por tu parámetro y te quedará así:

" LIKE '*" & Nz([Formularios]![Control Emisiones]![CuadroCliente];"") & "*'"


Te recomendaría que le echaras un repaso al curso de Olaz Martínez que tenemos en el foro, no tendrías estos problemas con el Access. Wink


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
letoy Ver desplegable
Nuevo
Nuevo


Unido: 15/Noviembre/2008
Localización: España
Estado: Sin conexión
Puntos: 15
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita letoy Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 30/Agosto/2019 a las 09:36
Mihura puede que tenga un poco de lio, pero la comilla simple la puse por dentro porque asi me lo indicaron, pero tu ahora me indicas que por fuera y yo la pongo por fuera, pero sigue sin funcionar.
LIKE ya lo estaba utilizando aunque no lo habia indicado.

Mounir no entiendo mucho tu solución que apuntas, hay que tener en cuenta que el valor del campo puede variar una vez este el formulario abierto.
Muchas gracias a ambos.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11092
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 30/Agosto/2019 a las 10:19
Entiendo que Vimipas se despistó con la colocación de las comillas.

Lo que te he puesto debe de funcionar:

- entorno diseño de consulta: 

   Como '*' & Nz([Formularios]![Control Emisiones]![CuadroCliente];'') & '*'        -> son todo comillas simples


- vista la consulta en modo SQL:

SELECT Numero_cli, Nombre_cli, Apellidos_cli
FROM Clientes
WHERE Apellidos_cli  Like '*' & Nz([Formularios]![Control Emisiones]![CuadroCliente],'') & '*'


¿No tendrás caracteres de control en ese campo de observaciones?


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5226
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita mounir Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 30/Agosto/2019 a las 10:20
Hola!

Mi pruepuesta es si el campo está vacío que asigne un origen de registro sin criterio, me explico, mas o menos así:-

If Len(MiCampo)= 0 Then

'La SQL sin criterio

Me.RecordSource = "SELECT ......... FROM TuTabla"

Else

'La SQL con criterios
Me.RecordSource = "SELECT ......... FROM TuTabla WHERE.[Observaciones] Like "*" & [Formularios]![Diario Recordatorios]![Observaciones] & "*";"

'Luego actualizas formulario
Me.Requery



Editado por mounir - 30/Agosto/2019 a las 10:28
Un Saludo.
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5246
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita VIMIPAS Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 30/Agosto/2019 a las 20:39
Buenas noches a todos.

Efectivamente Mihura me corrige acertadamente.

Aquí tengo mas sobre esta materia, expuesta por mi mismo anteriormente:


Las comillas van "antes" y "no después".

Gracias Mihura.

En cuanto a la proposición de Mounir, a mi me parece una solución buena y que seguramente efectiva al 100%. Pero antes habrá que dejar bien claro el concepto de como se "escribe la sintaxis de lo que se persigue en VBA".

Access en si mismo es tonto, no sabe distinguir entre las comillas antes o después, somos nosotros los que debemos distinguir esos matices.

Saludos.


Editado por VIMIPAS - 30/Agosto/2019 a las 20:41
Gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable