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.
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
0