Reporting Services,从任何Sharepoint列表获取数据

Reporting Services,从任何Sharepoint列表获取数据,sharepoint,sharepoint-2010,reporting-services,Sharepoint,Sharepoint 2010,Reporting Services,我正在尝试基于Sharepoint(2010)列表构建SSRS(2008R2)报告。 主要问题是运行报表的列表必须是报表参数。我知道列表结构是什么,但sharepoint网站可以包含多个具有此结构的列表实例,并且在运行报表时,用户必须选择列表名称。 此外,报告有两个日期参数MinDateTime和MaxDateTime,并且只选择时间介于这两个参数之间的记录 据我所知,构建报告至少有两种方法: 使用Sharepoint列表数据源,在CAML中编写数据集查询,在数据源中指定站点,让SSRS处理其余

我正在尝试基于Sharepoint(2010)列表构建SSRS(2008R2)报告。 主要问题是运行报表的列表必须是报表参数。我知道列表结构是什么,但sharepoint网站可以包含多个具有此结构的列表实例,并且在运行报表时,用户必须选择列表名称。 此外,报告有两个日期参数MinDateTime和MaxDateTime,并且只选择时间介于这两个参数之间的记录

据我所知,构建报告至少有两种方法:

  • 使用Sharepoint列表数据源,在CAML中编写数据集查询,在数据源中指定站点,让SSRS处理其余细节。本例中的问题是我无法将ListName指定为报表参数。数据集查询如下所示:

    <pre>
       <RSSharePointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <ListName>BusinessList1</ListName>
              <ViewFields>
                <FieldRef Name="Title" />
                <FieldRef Name="BusinessUnit" />
                <FieldRef Name="ScanDateTime" />
              </ViewFields>
              <Query>
                <Where>
                  <And>
                    <Geq>
                      <FieldRef Name="ScanDateTime" />
                      <Value Type="DateTime">
                        <Parameter Name="MinScanDateTime" />
                      </Value>
                    </Geq>
                    <Leq>
                      <FieldRef Name="ScanDateTime" />
                      <Value Type="DateTime">
                        <Parameter Name="MaxScanDateTime" />
                      </Value>
                    </Leq>
                  </And>
                </Where>
              </Query>
            </RSSharePointList>
    
    
    商业清单1
    

  • 使用XML数据源并用soap可读的XML编写数据集查询,直接访问/_vti_bin/lists.asmx Web服务。查询应该是这样的(包括列表名作为参数)。但是,我无法使用日期参数使其工作。应该在哪里添加它们

    ="<pre>
       <RSSharePointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <ListName>"
    
    & Parameters!BusinessList.value & 
    
    "</ListName>
              <ViewFields>
                <FieldRef Name="Title" />
                <FieldRef Name="BusinessUnit" />
                <FieldRef Name="ScanDateTime" />
              </ViewFields>
              <Query>
                <Where>
                  <And>
                    <Geq>
                      <FieldRef Name="ScanDateTime" />
                      <Value Type="DateTime">
                        <Parameter Name="MinScanDateTime" />
                      </Value>
                    </Geq>
                    <Leq>
                      <FieldRef Name="ScanDateTime" />
                      <Value Type="DateTime">
                        <Parameter Name="MaxScanDateTime" />
                      </Value>
                    </Leq>
                  </And>
                </Where>
              </Query>
            </RSSharePointList>"
    
    
    http://schemas.microsoft.com/sharepoint/soap/GetListItems
    商业清单1
    *
    

  • 任何方向都很好。
    谢谢,

    您可以使用选项1,将查询编写为表达式。在中间建立一个带有参数的长字符串。您需要一个单独的查询来向参数提供BusinessList列表

    表达式如下所示:

    =”
    "
    &参数!BusinessList.value&
    "
    

    它指出,您不需要指定要返回的字段,因此非常基本的查询表达式如下所示(添加了我的填充参数):

    =“”&Parameters!List.Value&“
    

    在我上面的原始示例中,我没有提到您需要通过将XML中的双引号加倍来避免双引号。我已经测试过了,效果很好。

    可能会帮助您。如果您需要对任意SharePoint列表进行大量报告,那么第三方工具(例如)可能是值得的。@john-谢谢,看起来不错,但我宁愿坚持使用t他“从不接触数据库”“sharepoint规则。@Jamie F-也看过了,但我们不能将其用于此项目。嘿,达沃斯。我尝试了你的解决方案,但我遇到了一个错误。标签是什么?我使用了OP的查询,只是回答了如何将动态参数合并到其中的问题。我建议使用硬编码的列表值来纠正语法,并在确定有效时将其转换为一个大字符串,并将参数填充到正确的位置。我使用了一个带有表达式=“Listname”的参数,并将参数名称插入到我的查询中。我的caml查询和你的一样。是否正确?假设您使用了SharePoint列表连接类型,请尝试使用查询设计器以可视化方式构建查询。它将为您编写XML。然后关闭查询编辑器。返回到数据集的属性(右键单击它并选择“数据集属性”),然后单击Fx按钮(表达式编辑器)。这与文本模式不同!然后可以适当地添加双引号。我意识到我在上面的例子中遗漏了一些东西。XML中已经有很多双引号,因此需要通过将它们加倍来避免这些双引号。i、 e.“我将编辑我的答案
    ="<pre>
       <RSSharePointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <ListName>"
    
    & Parameters!BusinessList.value & 
    
    "</ListName>
              <ViewFields>
                <FieldRef Name="Title" />
                <FieldRef Name="BusinessUnit" />
                <FieldRef Name="ScanDateTime" />
              </ViewFields>
              <Query>
                <Where>
                  <And>
                    <Geq>
                      <FieldRef Name="ScanDateTime" />
                      <Value Type="DateTime">
                        <Parameter Name="MinScanDateTime" />
                      </Value>
                    </Geq>
                    <Leq>
                      <FieldRef Name="ScanDateTime" />
                      <Value Type="DateTime">
                        <Parameter Name="MaxScanDateTime" />
                      </Value>
                    </Leq>
                  </And>
                </Where>
              </Query>
            </RSSharePointList>"
    
    ="<RSSharePointList xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""><ListName>" & Parameters!List.Value & "</ListName></RSSharePointList>"