我有一个报告,可以为指定的日期范围和事件类型创建事件列表。
日期范围和事件类型是报告中定义的参数。日期参数(@DateFrom和@DateTo)可以正常工作。
但是@EventType参数定义为DataSet提供的值列表(选中“允许多个值”),在使用{Select All}复选框时不提供预期的行为。如果我通过选中列表中的几个框来选择一个或多个事件类型,则报告将显示正确匹配指定事件类型的事件。
但是,如果单击{全选}框(然后突出显示所有其他可能的值),则报告不会显示所有这些事件类型值的事件。它似乎错过了{Select All}框选择的几个值。如果我专门针对那些缺失值运行报告,则报告将返回与这些类型匹配的事件。这向我表明这些类型的数据并不缺乏。
出于这个原因,它看起来像{Select All}被窃听......或者可能在某处缓存?我已经尝试删除报告/参数数据集并重新部署无济于事。值得注意的是,这种行为在部署之前也会在本地发生。
有没有人见过这个,或者有人有任何建议吗?
编辑 - 我还应该提到有问题的参数(@EventType)没有分配默认值。
答案 0 :(得分:2)
您如何声明变量的谓词?应该是这样的:
where thing in (@Variable)
其中@Variable是一个多值参数。
您可以尝试通过定义多值参数的值来查看多值参数的值是否也被丢弃。通常,如果数据类型不同,多值参数的收集方法可能会导致问题。
您也可以尝试在运行时设计数据集以构建而不是静态查询。 EG:为数据集设置表达式,如:
="Select * from table where thing in (" & Parameters!Variable.Value & ")"
这会导致参数构建为字符串的一部分,然后在运行时而不是传统查询中进行评估。
答案 1 :(得分:1)
不能完全相信这种情况,但传递给SQL Server过程的参数太小了。它被定义为VARCHAR(500),并且需要更大才能处理大量逗号分隔值。我将其更改为VARCHAR(4000),现在它按预期运行。
感谢Djangojazz指点我参数的方向。
答案 2 :(得分:0)
如果经过多选检查的参数下方的数据集且数据源设置为SQL查询,则该数据集包含空白或NULL,则SSRS参数下拉列表将变得混乱,并且不会自动选择“ ALL”(NULL)似乎使它困惑。
在我的数据集中杀死null / blank为我解决了问题(列不应该首先允许NULL)