0

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

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

谢谢

4

2 回答 2

0

这是做这种事情的方法

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

感谢君拉萨克

于 2014-05-17T14:56:18.663 回答
0

旧的,但我在上面浪费了几个小时,所以这里是:

(澄清一下,据我了解,问题在于 SharePoint CAML 查询中使用的报告参数不能是可选的;AFAIK 您无法实现我们在 SQL 中使用的模式“@parameter IS NULL OR column = @parameter”。)

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

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

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

    • 对于“表达式”,单击“fx”按钮并添加类似
      =Iif(Parameters!Client.Value = "", 1, Fields!Client.Value)
    • 对于“价值”,使用类似
      =Iif(Parameters!Client.Value = "", 1, Parameters!Client.Value)

因此,由于参数接受空白并具有空白作为默认值,因此在首次加载报表时将显示所有项目,因为在过滤器上,表达式和值都将评估为“1”。如果用户在 "Client" 参数文本框中提供了一个值,Expression 将评估为Fields!Client.Value,Value 将评估为Parameters!Client.Value并且项目将被过滤到与用户提供的值相对应的客户端。要返回完整列表,您只需清除客户端参数文本框中的值。该示例假设“=”作为过滤运算符,但它可以与“Like”一起使用;只需根据需要在值表达式上添加“*”。

于 2017-08-31T12:32:09.823 回答