【问题标题】:SSRS 2008 Drill through parameter filtering >= not workingSSRS 2008 钻取参数过滤 >= 不工作
【发布时间】:2018-10-26 13:57:14
【问题描述】:

我有一个包含计数的主要摘要报告和一个显示详细信息的钻取报告,该详细信息具有一个参数,其中来自主报告的计数被传递给钻取。但是我想查看计数大于或等于 2 的钻取报告。如果我在指定钻取报告名称和参数的参数部分中给出 >=2,则在运行时钻取中不会选择任何内容主要报告。如果我指定一个值,它运行良好,但如果我给出 >=2,则主报告正在运行,但如果我将参数指定为文本,则在参数中也没有选择任何值。如果我将参数定义为整数,则会给出数据不匹配错误,并且报告根本没有运行。如果我定义为文本,则主报告正在运行但未选择任何参数。有人可以请教。感谢您的宝贵时间

从主报告中,我想查看具有 count>=2 的钻取报告。如何在钻取报告中将 >=2 传递给 count 参数。我只有一个要求 - 将 >=2 作为参数传递。我如何做到这一点。

【问题讨论】:

  • 你不能这样传递过滤器。您可以将计数作为参数(只是数值)传递,然后在您的过滤器表达式中使用它,但我不完全理解您想要实现的目标。请编辑您的问题并显示您的主要和子报告的详细信息、数据样本和预期输出。
  • 嗨艾伦,我已经编辑了我原来的问题。我只传递整数。我只想知道如何将 >=2 传递给 count 参数。问题在于给出>=。请告知如何实现这一点。谢谢
  • 我还是不明白。请记住,我们看不到您的代码或报告设计。请展示报告设计和样本数据

标签: reporting-services parameters drillthrough


【解决方案1】:

参数需要一个数字。 如果您希望它有时等于参数并且大于其他参数,则需要创建第二个参数,然后让您的详细报告使用过滤器的 OR 来处理它。 `

在查询中(假设 CNT 是计数字段):

WHERE (CNT = @CNT AND @OPERATOR = '=') OR (CNT >= @CNT AND @OPERATOR = '>=')

对于数据集过滤器,表达式类似于:

=IIF((Fields!CNT.Value = Parameters!CNT.Value AND Parameters!OPERATOR.Value = "=") OR (Fields!CNT.Value >= Parameters!CNT.Value AND Parameters!OPERATOR.Value = ">="), 1, 0)

将 Type 设置为 INTEGER,Operator 设置为 =,Value 设置为 1。

表达式检查记录是否等于选择 = 时的计数或 >= 选择 >= 时的计数,并为该记录提供值 1,否则为 0。然后过滤器检查那些等于 1。

【讨论】:

  • 您好,感谢您的回复。从主报告中,我想查看具有 count>=2 的钻取报告。如何在钻取报告中将 >=2 传递给 count 参数。我只有一个要求 - 将 >=2 作为参数传递。有没有简单的方法可以做到这一点。
  • 如果您真的想将 >=2 作为单个参数传递,则必须将其作为字符串传递,然后使用该字符串将查询创建为字符串变量 (@SQL),然后使用 EXEC @SQL 执行它。但如果您只需要 2,则需要输入 =2。示例:stackoverflow.com/questions/40901891/t-sql-dynamic-query
  • 感谢汉诺威拳头。我想通了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多