【问题标题】:Reporting Services - Multi-value parameter query returning no resultsReporting Services - 多值参数查询不返回任何结果
【发布时间】:2012-06-19 19:33:19
【问题描述】:

使用 SSRS (SQL Server 2005) 我设置了两个报告。为了便于解释,我们称它们为MAIN_REPORTSUB_REPORT

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

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

如果您选择区域单元格之一,它将打开SUB_REPORT 并使用Join(Parameters!ResultsOfSearch.Value,",") 将参数传递给@ParentTagNamesResultsOfSearch 等于上面的标记名列(还没有想出如何将标记名限制为仅选定区域中的标记名,但我稍后会担心)。

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'

【问题讨论】:

  • 这里的查询是存储过程还是报表中的纯文本?
  • 在报告本身中;此时没有存储过程。
  • 哦,也许我的问题是 JOIN 本身;是把它变成一个单一的领域吗?
  • 不。诅咒。再次挫败。
  • 您可以使用 Management Studio 直接对数据库运行查询吗?另外,你知道 h.TagName 的列定义是什么吗?

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


【解决方案1】:

我认为您可能需要对 MAIN_REPORT 进行 SPLIT 调用,以强制 SSRS 获取传入参数并将其放入数组中。

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

【讨论】:

  • 呃,好吧,在 MAIN_REPORT 上做。
  • 下一步是弄清楚当我点击 A1 而不是 T1、T2、T3、T4 时,二分如何让它只通过 T1 和 T2。下一个障碍,希望不会太糟糕。
  • 试一试,如果您遇到困难,请随时提出单独的问题。你很好地解释了你对这个问题的问题,所以我毫不怀疑你会在进一步的问题上得到很大的帮助。
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多