Access - Comando like en una consulta no funciona

 
Vista:

Comando like en una consulta no funciona

Publicado por Novato92 (3 intervenciones) el 06/11/2018 17:19:59
Hola buenas tardes,
He estado buscando y no he conseguido encontrar nada, siento si este error ha sido ya comentado con anterioridad.
Para sacar una lista de fallos creo una consulta que vuelca los datos en una lista. Esta consulta funciona todo correctamente excepto por un criterio al cual no consigo dar solución, es un criterio que viene de un like (o como)
Si el código lo escribo en el SQL de la consulta no funciona pero si introduzco el codigo desde Visual Basic a la consulta funciona perfectamente... es algo que no consigo entender puesto que es el mismo codigo.
Aquí dejo el codigo introducido desde visual:

Me.ListaFallos.RowSource = "SELECT [Vehículos Control de Fallos].id, [Vehículos Control de Fallos].[codigo vehículo (f)], [Vehículos Control de Fallos].[Fecha control (f)]," _
& "[Vehículos Control de Fallos].Gravedad, [Vehículos Control de Fallos].Definición FROM [Vehículos Control de Fallos]" _
& "WHERE ((([Vehículos Control de Fallos].[codigo vehículo (f)])=[CmbCodVehiculo])AND (([Vehículos Control de Fallos].[Fecha control (f)]) Between [FechaDesde] And [FechaHasta])" _
& "AND (([Vehículos Control de Fallos].Gravedad) Like IIf(IsNull([CmbGravedad]),'**',[CmbGravedad])) AND (([Vehículos Control de Fallos].Definición) Like '*" & Me.Definicion & "*')) ORDER BY [Vehículos Control de Fallos].Gravedad;"

Aquí el codigo introducido en la consulta en el apartado de SQL server

SELECT [Vehículos Control de Fallos].id, [Vehículos Control de Fallos].[codigo vehículo (f)], [Vehículos Control de Fallos].[Fecha control (f)], [Vehículos Control de Fallos].Gravedad, [Vehículos Control de Fallos].Definición
FROM [Vehículos Control de Fallos]
WHERE ((([Vehículos Control de Fallos].[codigo vehículo (f)])=[CmbCodVehiculo]) AND (([Vehículos Control de Fallos].[Fecha control (f)]) Between [FechaDesde] And [FechaHasta]) AND (([Vehículos Control de Fallos].Gravedad) Like IIf(IsNull([CmbGravedad]),'**',[CmbGravedad])) AND (([Vehículos Control de Fallos].Definición) Like '*" & [Definicion] & "*'))
ORDER BY [Vehículos Control de Fallos].Gravedad;

Es exactamente igual, copiada y pegada, pero desde aqui no funciona.
El criterio que no funciona es el referente a la linea: Like '*" & Me.Definicion & "*'
Imagino que sera un problema de nomenclatura de la variable Definicion que es un texto con el que escribo en el formulario para buscar los fallos de tal nombre.

Otra pregunta es si existe algo mas sencillo para hacer que si en un cuadro combinado no haya nada siga haciendo la busqueda si esta como criterio, lo que yo he codificado asi:
(([Vehículos Control de Fallos].Gravedad) Like IIf(IsNull([CmbGravedad]),'**',[CmbGravedad]))

Espero que me puedan ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 50
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Comando like en una consulta no funciona

Publicado por Cesar (23 intervenciones) el 06/11/2018 17:30:15
Hola.

En el Like no son asteriscos (*), son porcentajes (%).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comando like en una consulta no funciona

Publicado por Novato92 (3 intervenciones) el 06/11/2018 17:37:23
Muchas gracias
He intentado con % y no funciona...
Como debo nombrar la variable que seria el cuadro de texto (llamado Definicion) del formulario
Porque la nomenclatura es diferente en Visual que en SQL cuando en Visual estoy entregando el codigo SQL
No deberian ser lo mismo?¿?¿?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comando like en una consulta no funciona

Publicado por Anonimo (3312 intervenciones) el 06/11/2018 21:50:16
El indicador de ambigüedad en Access es el asterisco, utilizaría como indicador el símbolo del porcentaje si se le ha configurado (a Access) con compatibilidad con el SQL Server.

Pero en ese caso no funcionaria LIKE, sino ALIKE (con una 'A' al inicio para que Access entienda de que va el lio)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comando like en una consulta no funciona

Publicado por Novato92 (3 intervenciones) el 06/11/2018 22:24:19
He probado un poco lo que comentáis
Pero el problema radica en nombrar la variable
Si en la consulta pongo como criterio “ & Me.Definicion & “ tampoco funciona
Pero al metérselo desde Visual Basic si
(Desde: Me.ListaFallos.rowsource = “SELECT....”)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comando like en una consulta no funciona

Publicado por Anonimo (3312 intervenciones) el 07/11/2018 09:09:49
Para que la maquina responda fielmente a nuestras ordenes, lo indispensable es que hablemos en su idioma.

Una cosa es lo que creemos que escribimos y otra lo que 'ella' interpreta, así que lo idóneo seria poder 'ver' que es lo que interpreta la maquina para lo cual propongo una solución sencilla y fácil de aplicar:

En lugar de efectuar una asignación directa como origen de datos de un objeto, asignemos esa SQL a una simple cadena de texto.

Tras ello se le asignaría esa cadena de texto como origen de datos del objeto (cuando funcione correctamente, este paso puede eliminarse)

Ya en tiempo de ejecución, un punto de interrupción (o la salida a un MsgBox o a la ventana de inmediato) mostrarían la cadena de texto y se podría apreciar si la sintaxis es correcta (la que se esperaba) o si la referencia a elementos ajenos es bien interpretada (muchas veces es imprescindible 'sacarla afuera').

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar