我想知道我是否可以在报告本身中创建条件Caml过滤。,根据提供的过滤器参数修改Caml查询。
如果没有,那么我正在寻求关于在SP2010中创建SSRS报告的最佳方法的建议。
谢谢
就是这样做的
([Parameter1] = "" or Field1 contains [Parameter1])
and
([Parameter2] = "" or Field2 contains [Parameter2])
感谢Junlasak
旧的,但我在上面浪费了几个小时,所以它是这样的:
(只是为了澄清,我所理解的问题是SharePoint CAML查询上使用的报告参数不能是可选的;恐怕你不能实现我们在SQL中使用的模式"@parameter IS NULL OR column = @parameter"。
-
创建从SharePoint检索所有记录的数据集。
- 你必须小心检索更多的记录,限制SharePoint强加的查询(默认是5K项在SharePoint 2013+)。没有测试它的行为。理想的做法是添加非可选参数,以尽量减少或消除这种可能性。
-
创建一个接受空白的报表参数,默认值为空白(SSRS中的空字符串)
-
添加过滤器到(详细信息)行组(选项卡视图>分组显示行组和列组窗格,行组>(详细信息)上下文菜单>组属性>过滤器>添加):
- 对于"Expression",点击"fx"按钮并添加如下内容
=Iif(Parameters!Client.Value = "", 1, Fields!Client.Value)
- 对于"值",使用类似
的内容=Iif(Parameters!Client.Value = "", 1, Parameters!Client.Value)
- 对于"Expression",点击"fx"按钮并添加如下内容
因此,由于参数接受空白并将空白作为默认值,因此在第一次加载报告时将显示所有项,因为在过滤器上Expression和value的值都将计算为"1"。如果用户在"客户端"参数文本框中输入一个值,则表达式(Expression)将被求值为Fields!Client.Value
,值(value)将被求值为Parameters!Client.Value
,并将项目过滤到用户提供的值对应的客户端。要返回完整的清单,只需清除Client参数文本框中的值。该示例假设"="作为过滤操作符,但它可以与"Like"一起使用;