问题描述
|
我试图在报表中的文本字段上添加可选过滤器。我尝试在数据集中进行设置,但是将其视为必需的过滤器,因此,如果未填充该过滤器,则不会返回任何结果。它需要使用Like运算符。有什么建议吗?
解决方法
当我输入解决此问题的方法时,我实现了一个非常简单的解决方案(现在我更好地了解了它的工作原理)。
这是我所做的:
由于洪指出必须满足所有过滤条件,所以我改变了想法。我将现有的\“ IN \”过滤器移动到查询中,并将参数直接输入到查询中。然后我在报表上通过\“ LIKE \”文本过滤器创建了默认值\“ * \”的文本过滤器,因此它将立即返回所有内容。
这是我可以做的:
只是最后一部分。添加了具有默认值\“ * \”的\“ LIKE \”过滤器,因此它立即返回了所有内容。
, 我也同意大多数时候最好将参数发送回SQL。由于这不是OP的要求,因此这是我找到的最佳选择。而且实际上很简单。
添加具有适当数据类型的参数。让我们使用
在这种情况下,“城市”的示例(文本/字符串字段)。
检查参数上的“允许空值”。
将过滤器添加到tablix,表或数据集。
在表达式中,选择要过滤的字段。在以下示例中,在“城市”数据示例中选择合适的运算符:
= IIF((Parameters!City.Value Nothing),Fields!City.Value,Parameters!City.Value)
, 我认为您无法在“数据集属性/过滤器”中创建可选过滤器,在此添加过滤器意味着返回与所有过滤器条件匹配的结果,因此所有过滤器之间的逻辑关系为“ AND”,而不是“ OR” 。
我的建议是在数据集的查询设计器中使用过滤器,您可以在其中定义\“ OR \”关系以过滤出数据。例如:Your_Text_Field = \“ SomeValue \”或Your_Text_Field为空。
, 尽管我同意在大多数情况下最好将参数发送回存储过程或数据层以减少返回的数据量,但我仍然认为在RDL文件中进行参数处理同样容易通过过滤器。由于这种独特的情况,我找到了该解决方案,它为您提供了一种在RDL文件中创建可选过滤器的方法。
http://www.andrewshough.com/development/sqlserver/ssrs/optional-filter-in-ssrs/
这是一篇很棒的博客文章,其中包含有关如何创建可选过滤器的简单逐步说明。
请注意:这不是我的博客,但是我虽然此解决方案非常适合我的需要,但我希望它像我一样在别人搜索“ SSRS中的可选过滤器”时对其他人有所帮助。
, 我找到了一个帖子,该帖子解决了我的问题,将报告消费者的过滤器设置为a)选择了所有多值字段,以便用户b)必要时可以指定他/她的选择。
Kasim 2010年12月8日8:55 AM#
在报告中,当我们想要将多值参数默认设置为“全选”时,请执行以下步骤。
从报告菜单中打开报告参数窗口。
从窗口的左侧选择“报告”参数。
选中“多值”复选框,然后选择相应的“可用值”。
在默认值下,选择\'从查询\'单选按钮\'。
选择适当的\“数据集”。
选择适当的\“值字段”。
保存报告,然后选择预览选项卡。您将在多值>参数列表中找到所有选定的项目,并为所有选定的项目显示结果。
可以在以下网址找到:http://blogs.msdn.com/b/bimusings/archive/2007/05/07/how-do-you-set-select-all-as-the-default-for-multi-value-parameters -reporting-services.aspx
(帖子在中间的评论中出现。)
, 您可以通过在数据集过滤器上使用表达式来完成此操作。
检查一下