Reporting Services - 多值参数查询不返回任何结果

时间:2012-06-19 19:33:19

标签: sql-server-2005 reporting-services parameters multivalue

使用SSRS(SQL Server 2005)我已经设置了两个报告。为便于说明,我们称之为MAIN_REPORTSUB_REPORT

MAIN_REPORT运行一个返回一组区域的查询,每个区域有多个TagNames:

AREA    Tagname
----------
A1        T1
A1        T2
A2        T3
A3        T4

如果您选择其中一个区域单元格,则会打开SUB_REPORT并使用@ParentTagNames将参数传递给Join(Parameters!ResultsOfSearch.Value,",")ResultsOfSearch等于上面的Tagname列(尚未弄清楚如何将Tagnames限制为仅选定区域中的Tagnames,但我稍后会担心)。

SUB_REPORT获取传递的参数并查询大型数据库中的标记名,并返回可用值的最小值,最大值和平均值:

SELECT
h.TagName as TagName,
Minimum = convert(decimal(38, 2), Min(h.Value)), 
Maximum = convert(decimal(38, 2), Max(h.Value)), 
Average = convert(decimal(38, 2), Avg(h.Value)) 
FROM INSQL.Runtime.dbo.History h 
WHERE h.TagName in (@ParentTagNames)
AND h.wwVersion = 'LATEST'
AND h.wwRetrievalMode = 'Cyclic'
AND h.wwResolution = '60000'
AND h.Value > '-1.0'
AND h.DateTime >= '2009-09-01 12:00:00'
AND h.DateTime <= '2009-09-02 16:00:00'
GROUP BY h.TagName

但是,如果@ParentTagNames等于多个值,则不返回任何数据。如果它等于单个标记,则返回数据。我认为它必须与@ParentTagNames中的数据格式有关,因为它是从MAIN_REPORT传递的,但似乎并不重要。

我尝试过以下格式:

T1,T2,T3,T4,T5,T6
'T1','T2','T3','T4','T5','T6'

我确保检查参数@ParentTagNames的多值。谷歌成功地让我失望了。

任何?

编辑:探险家魔术!

exec sp_executesql N'SELECT
    h.TagName as TagName,
    Minimum = convert(decimal(38, 2), Min(h.Value)), 
    Maximum = convert(decimal(38, 2), Max(h.Value)), 
    Average = convert(decimal(38, 2), Avg(h.Value)) 
FROM INSQL.Runtime.dbo.History h 
WHERE h.TagName in (@ParentTagNames)
AND h.wwVersion = ''LATEST''
AND h.wwRetrievalMode = ''Cyclic''
--AND h.wwResolution = @Resolution
AND h.wwResolution = ''60000''
AND h.Value > ''-1.0''
--AND h.DateTime >= @StartTime
--AND h.DateTime <= @EndTime

AND h.DateTime >= ''2009-09-01 12:00:00''
AND h.DateTime <= ''2009-09-02 16:00:00''

GROUP BY h.TagName',N'@ParentTagNames nvarchar(46)',@ParentTagNames=N'M12_CPM_Filling_250.Value,M8_Filling_391.Value'

1 个答案:

答案 0 :(得分:1)

我认为您可能需要在MAIN_REPORT上调用SPLIT来强制SSRS获取传入参数并将其放入数组中。

参考:http://www.stuffthatjustworks.com/HowToPassMultivalueReportParametersToSubreportsInReportBuilder.aspx