我正在尝试在报告中的文本字段上添加可选过滤器。我已经尝试在数据集中进行设置,但它会将其视为必需的过滤器,因此如果未填充,则不会返回任何结果。它需要使用 Like 运算符。有什么建议吗?
6 回答
当我为这个问题输入解决方法时,我意识到了一个非常简单的解决方案(现在我更好地理解了它是如何工作的)。
我是这样做的:由于Hong指出必须满足所有过滤条件,因此我颠倒了想法。我将现有的“IN”过滤器移动到查询中,并将参数直接提供给查询。然后我在报告上创建了“LIKE”文本过滤器,默认值为“*”,因此它会立即返回所有内容。
这是我可以做的:只是最后一部分。添加了默认值为“*”的“LIKE”过滤器,因此它立即返回所有内容。
我也同意大多数时候最好将参数发送回 SQL。由于这不是 OP 所要求的,因此这是我找到的最佳选择。它实际上很简单。
添加具有适当数据类型的参数。在这种情况下,让我们使用“城市”的示例(文本/字符串字段)。
选中参数上的“允许空值”。
将过滤器添加到 tablix、表或数据集。
在表达式中,选择要过滤的字段。选择适当的运算符,在我的城市数据集示例中,在 Value 中输入:
=IIF((Parameters!City.Value 什么都没有), Fields!City.Value, Parameters!City.Value)
我认为您不能在 DataSet Properties/Filters 中创建可选过滤器,在此处添加过滤器意味着返回与所有过滤器条件匹配的结果,因此它是所有过滤器之间的“AND”逻辑关系,而不是“OR”。
我的建议是在数据集的查询设计器中使用过滤器,您可以在其中定义“或”关系来过滤掉数据。例如:Your_Text_Field="SomeValue" 或 Your_Text_Field 为空。
虽然我同意大多数时候最好将参数发送回存储过程或数据层以减少返回的数据量,但我有一个案例,在 RDL 文件中进行参数处理同样容易通过过滤器。由于这种独特的情况,我找到了这个解决方案,它为您提供了一种在 RDL 文件中创建可选过滤器的方法。
http://www.andrewshough.com/development/sqlserver/ssrs/optional-filter-in-ssrs/
这是一篇很棒的博客文章,其中包含有关如何创建可选过滤器的简单分步说明。
请注意: 这不是我的博客,但我虽然这个解决方案非常适合我需要的东西,我希望当他们像我一样在谷歌搜索“SSRS 中的可选过滤器”时它可以帮助其他人。
我发现一个帖子解决了我的问题,将报告消费者的过滤器设置为 a) 选择所有多值字段,以便用户 b) 可以在必要时指定他/她的选择。
卡西姆 2010 年 12 月 8 日上午 8:55 #
在报告中,当我们希望将多值参数默认为“全选”时,步骤如下。
从报告菜单中打开报告参数窗口。
从窗口左侧选择报告参数。
选择“多值”复选框和适当的“可用值”。
在默认值下选择“来自查询”单选按钮“。
选择适当的“数据集”。
选择适当的“值字段”。
保存报告并选择预览选项卡。您将在多值 > 参数列表中找到所有选定的项目,并为所有选定的项目显示结果。
(帖子出现在评论的中间位置。)
您可以通过在数据集过滤器上使用表达式来完成此操作。检查这个