选择所有参数在SSRS中不起作用
我有一个报告,它为指定的日期范围和事件类型创建事件列表。选择所有参数在SSRS中不起作用
日期范围和事件类型是在报告中定义的参数。日期参数(@DateFrom和@DateTo)按照它们应该的那样工作。
但是,@EventType参数定义为由DataSet提供的值列表(使用'Allow Multiple values'选中),但在使用{Select All}复选框时不提供预期的行为。如果通过选中列表中的多个框来选择一个或多个“事件类型”,报告将正确显示与指定的事件类型匹配的事件。但是,如果单击{全选}框(然后突出显示所有其他可能的值),则报告不会显示所有这些事件类型值的事件。它似乎错过了{Select All}框中选择的几个值。如果我专门为这些缺失值运行报告,报告将返回与这些类型匹配的事件。这表明对于这些类型并不缺乏数据。
因此,它看起来像{Select All}被窃听......或者可能缓存在某处?我试过删除报告/参数数据集并重新部署无效。值得注意的是,在部署它之前,这种行为也发生在本地。
有没有人看过这个之前,或没有人有任何建议?
编辑 - 我还应该提到有问题的参数(@EventType)没有指定默认值。
不能完全相信这种情况,但传递给SQL Server过程的参数太小。它被定义为一个VARCHAR(500),需要更大的处理大量逗号分隔值。我将其更改为VARCHAR(4000),现在按预期工作。
感谢Djangojazz将我指向参数的方向。
你如何为变量声明谓词?它应该是这样的:
where thing in (@Variable)
其中@Variable是一个多值参数。
您可以尝试查看多值参数的值是否在某个地方被删除,方法是定义它们。如果数据类型不同,通常多值参数的收集方法可能会导致问题。
此外,您可能会尝试在运行时设计您的数据集以构建而不是静态查询。 EG:设置一个表达式为您的数据集,如:
="Select * from table where thing in (" & Parameters!Variable.Value & ")"
这将导致建立一个字符串的一部分的参数,然后在运行时,而不是从传统的查询评估。
感谢您的帮助,我已在下面发布了答案。 – phillyd 2013-04-09 14:35:58