Stack Overflow en español Asked by Elton on November 27, 2021
No estoy acostumbrado a trabajar con SSRS, pero por requisitos de un proyecto me encuentro con esta necesidad.
Estoy creando un report en el cual necesito listar una serie de áreas de trabajo y el resultado es un filtro multiárea para que se pueda selecionar, uno, varios o todos.
El problema viene a la hora de seleccionar más de un filtro. Cuando selecciono dos o más casillas, me aparece el siguiente mensaje de error a la hora de generar el informe:
"An error occurred during local report processing. An error has occurred during report processing. Query execution failed for Dataset ‘Eventos’. Incorrect syntax near ‘,’."
La Query que realizo contra el Dataset ‘Eventos’, es la siguiente:
IF @TipoEvento=1
BEGIN
SELECT [Alarm_Id]
,[Start_Time]
,[NombreTag]
,[Descrip]
,[Areas]
,[Nuevo]
,[Anterior]
,[Username]
FROM VW005_Events_Def
WHERE
Areas IN
(SELECT [AlarmArea] FROM [FIXALARMS].[dbo].[TB001_ZonaArea] Where [Zona] IN (@zona))
AND (Start_Time BETWEEN @StartTime AND DATEADD(s, 1, @EndTime)) AND
AND (Descrip LIKE '%'+@fdesc+'%')
AND ((NombreTag NOT LIKE '%_SPAN') OR (NombreTag NOT LIKE '%_OFFSET')
OR (NombreTag NOT LIKE '%_WIRE'))
AND (Descrip NOT LIKE '%AlmODBC%')
ORDER BY Start_Time
END
ELSE
BEGIN
SELECT [Alarm_Id]
,[Start_Time]
,[NombreTag]
,[Descrip]
,[Areas]
,[Nuevo]
,[Anterior]
,[Username]
FROM VW005_Events_Def
WHERE Areas IN
(SELECT [AlarmArea] FROM [FIXALARMS].[dbo].[TB001_ZonaArea] Where [Zona] IN (@zona))
AND (Start_Time BETWEEN @StartTime AND DATEADD(s, 1, @EndTime))
AND (Descrip LIKE '%'+@fdesc+'%')
AND ((NombreTag LIKE '%_SPAN') OR (NombreTag LIKE '%_OFFSET')
OR (NombreTag LIKE '%_WIRE'))
AND (Descrip NOT LIKE '%AlmODBC%')
ORDER BY Start_Time
END
Para el caso que nos toca, @TipoEvento es igual a 1.
Si ejecuto la parte de la Query que me interesa en SQL funciona correctamente, y si tan sólo marco UN filtro, también funciona. Me da la sensación que no "separa" las comas intermedias del "listado" que busco previamente.
Un saludo y gracias por adelantado.
Las cláusulas IN son complicadas con las variables, por lo que se necesita una forma distinta de proceder. Crear una variable de tipo tabla con las @zonas:
DECLARE @zonas TABLE (list varchar(25))
INSERT into @zonas
SELECT DISTINCT Zona FROM TB001_ZonaArea
Y ajustar el WHERE
WHERE [Zona] in ( select list from @zonas )
Otra forma mas directa, si la seleccion no requiere un proceso muy complicado:
WHERE [Zona] in ( SELECT DISTINCT Zona FROM TB001_ZonaArea WHERE condition1=value1 )
Answered by F.Igor on November 27, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP