【问题标题】:Parameter filter SSRS Expression Dataset参数过滤器 SSRS 表达式数据集
【发布时间】:2018-06-20 18:49:26
【问题描述】:

我有一个从一个表达式创建的数据集,该表达式从其他 3 个数据集获取参数。

我需要为此添加一个参数,允许用户输入一个值,然后数据集将该值添加到 where 子句以过滤显示的结果。如果输入值“Any”,那么对于 Where 子句的这一部分,结果将不被过滤(如果有意义的话)。

我写了这个并将它添加到表达式 Where 子句中,但它不起作用。

+ IIf(Parameters!RCode.Value = "ANY", "", " AND h.rcode = " + Parameters!RCode.Value + " ")

如果需要,我可以提供 where 子句的其余部分,但如果我删除这一行,整个事情就可以了,如果我添加这一行,它就会被

An error has occurred during report processing. (rsProcessingAborted)
Cannot set the command text for dataset 'DS'. (rsErrorSettingCommandText)

【问题讨论】:

  • 你能发布数据集的 SQL 吗?

标签: reporting-services ssrs-2012 ssrs-expression


【解决方案1】:

在数据集查询中,您可以通过简单地在参数名称前加上 @ 来使用参数名称,例如。 @R代码

为了使它起作用,你的 WHERE 子句应该是这样的(我假设你的列名是 rcode):

WHERE .... 
AND (@RCode = 'ANY' OR rcode = @RCode )

对于多值参数

WHERE ...
AND ('ANY' IN (@RCode) OR rcode IN (@RCode) )

【讨论】:

  • 因为这是一个表达式,我最终需要为@RCode 数据集创建一个隐藏参数,然后为这个数据集/参数创建另一个参数。所以基本上我有 2 个参数提供一个数据集,然后将其传递给主数据集。如果这纯粹是 SQL,而不是动态的,甚至不是表达式,那么您的代码就可以工作。当我纯粹在 SSMS 中做报告时,我会按照你在各处发布的方式做事,但现在情况不再如此,SSRS 很烦人。
猜你喜欢
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
相关资源
最近更新 更多