如何使用针对Sharepoint List的SSRS报告实现可选参数过滤

时间:2014-05-17 11:11:26

标签: sharepoint reporting-services caml splist

我想知道我是否可以在报告本身内创建条件Caml过滤..根据提供的过滤器参数修改Caml查询。

如果没有,那么我就在SP2010内创建SSRS报告的最佳方法寻求建议。

由于

2 个答案:

答案 0 :(得分:0)

这是做这种事的方法

([Parameter1] = "" or Field1 contains [Parameter1])
and
([Parameter2] = "" or Field2 contains [Parameter2])

感谢Junlasak

答案 1 :(得分:0)

旧的,但我失去了几个小时,所以在这里:

(只是为了澄清,我理解的问题是SharePoint CAML查询上使用的报表参数不能是可选的; AFAIK你不能实现模式" @parameter IS NULL OR column = @参数"我们在SQL中使用。)

  1. 创建从SharePoint中检索所有记录的数据集。

    • 您必须小心检索SharePoint对查询施加的限制的更多记录(默认情况下是SharePoint 2013+上的5K项)。没有测试它看它是如何表现的。理想的是添加非可选参数以最小化或消除这种可能性。
  2. 创建一个接受空白的报表参数,并将空白(SSRS中为空字符串)作为默认值。

  3. 将过滤器添加到(详细信息)行组(选项卡视图>分组以显示行和列组窗格,行组>(详细信息)上下文菜单>组属性>过滤器>添加):

    • For" Expression"点击" fx"按钮并添加类似的东西 =Iif(Parameters!Client.Value = "", 1, Fields!Client.Value)
    • For" Value"使用类似的东西 =Iif(Parameters!Client.Value = "", 1, Parameters!Client.Value)
  4. 因为参数接受空白并且空白为默认值,所以当首次加载报告时,将显示所有项目,因为在过滤器上,表达式和值将评估为" 1"。如果用户在"客户端"上提供了值。参数文本框,表达式将评估为Fields!Client.Value,值将评估为Parameters!Client.Value,项目将被过滤到与用户提供的值对应的客户端。要返回完整列表,只需清除Client参数文本框中的值即可。这个例子假设" ="作为过滤器操作符,但它可以与" Like&#34 ;;只需添加" *"根据需要在Value表达式上。