小编典典

带有结果查询的SOAP调用(SSRS,Sharepoint)

sql

我使用连接到共享点列表的共享数据源在VS中创建了一个报告。在该报告中,我创建了一个对数据源进行SOAP调用的数据集,以便从表的共享点列表中获取结果。

这是电话

<Query>
<SoapAction>http://schemas.microsoft.com/sharepoint/soap/GetListItems</SoapAction>
<Method Namespace="http://schemas.microsoft.com/sharepoint/soap/" Name="GetListItems">
  <Parameters>
     <Parameter Name="listName">
        <DefaultValue>{BD8D39B7-FA0B-491D-AC6F-EC9B0978E0CE}</DefaultValue>
     </Parameter> 
     <Parameter Name="viewName">
        <DefaultValue>{E2168426-804F-4836-9BE4-DC5F8D08A54F}</DefaultValue>
     </Parameter>
     <Parameter Name="rowLimit">
        <DefaultValue>9999</DefaultValue>
     </Parameter>   
  </Parameters>
</Method>   
<ElementPath IgnoreNamespaces="True">*</ElementPath>
</Query>

这个工作正常,我可以在报告中显示结果,但是我希望能够选择一个参数来过滤结果。我已经创建了一个参数,当我预览报表时,我看到一个下拉列表框,可用于从“标题”字段中进行选择,当我执行此操作时,它仍显示第一条记录,显然它尚不起作用(DUH!)因为我需要在
某个地方 创建查询,但是!我不知道在哪里,我试图包括

   <Where>
    <Eq>
     <FieldRef Name="ows_Title" />
     <Value Type="Text">testValue</Value>
    </Eq>
   </Where>

在肥皂请求中,但没有成功…我已经搜索了intarwebz,但找不到任何类似的问题…现在有点卡住了…对此有何想法?

编辑

这是我根据链接到Alex Angas的博客使用的查询。

<Query>
   <SoapAction>http://schemas.microsoft.com/sharepoint/soap/GetListItems</SoapAction>
   <Method Namespace="http://schemas.microsoft.com/sharepoint/soap/" Name="GetListItems">
<queryOptions></queryOptions> 
<query><Query>

<Where>

<Eq>

<FieldRef Name="ows_Title"/>

<Value Type="Text">someValue</Value>

</Eq>

</Where>

</Query></query>   
      <Parameters>
         <Parameter Name="listName">
         <DefaultValue>{BD8D39B7-FA0B-491D-AC6F-EC9B0978E0CE}</DefaultValue>
     </Parameter> 
     <Parameter Name="viewName">
        <DefaultValue>{E2168426-804F-4836-9BE4-DC5F8D08A54F}</DefaultValue>
     </Parameter>
     <Parameter Name="rowLimit">
        <DefaultValue>9999</DefaultValue>
     </Parameter>

  </Parameters>
</Method>   
<ElementPath IgnoreNamespaces="True">*</ElementPath>
</Query>

我试图以各种可能的方式将新的查询语句放入现有的查询语句中,但是它根本不起作用,尽管我没有收到错误,所以代码是有效的,但是我仍然得到未过滤的列表作为返回值。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
在这里拉我的头发!


阅读 172

收藏
2021-04-14

共1个答案

小编典典

张贴在:

http://social.msdn.microsoft.com/forums/zh-
CN/sqlreportingservices/thread/1562bc7c-8348-441d-8b59-245d70c3d967/

建议使用以下语法放置节点(此示例将检索ID为1的项目):

<Query>
  <SoapAction>http://schemas.microsoft.com/sharepoint/soap/GetListItems</SoapAction>
  <Method Namespace="http://schemas.microsoft.com/sharepoint/soap/" Name="GetListItems">
    <Parameters>
      <Parameter Name="listName">
        <DefaultValue>{CE7A4C2E-D03A-4AF3-BCA3-BA2A0ADCADC7}</DefaultValue>
      </Parameter>
      <Parameter Name="query" Type="xml">
        <DefaultValue>
          <Query>
            <Where>
              <Eq>
                <FieldRef Name="ID"/>
                <Value Type="Integer">1</Value>
              </Eq>
            </Where>
          </Query>
        </DefaultValue>
      </Parameter>
    </Parameters>
  </Method>
  <ElementPath IgnoreNamespaces="True">*</ElementPath>
</Query>

但这会给我以下错误:

无法执行对指定URL的Web请求

详细内容如下:

元素&lt; Query&gt; 的参数查询丢失或无效

通过使用Microsoft Network Monitor查看SOAP消息,看起来节点正转义为&lt;
Query&gt;。等等,这就是为什么它失败了。

但是,我能够使用Martin Kurek的响应中所述的方法使此方法起作用:

http://www.sharepointblogs.com/dwise/archive/2007/11/28/connecting-sql-
reporting-services-to-a-sharepoint-list-
redux.aspx

因此,我将其用作查询:

<Query>
  <SoapAction>http://schemas.microsoft.com/sharepoint/soap/GetListItems</SoapAction>
   <Method Namespace="http://schemas.microsoft.com/sharepoint/soap/" Name="GetListItems">
      <Parameters>
         <Parameter Name="listName">
            <DefaultValue>{CE7A4C2E-D03A-4AF3-BCA3-BA2A0ADCADC7}</DefaultValue>
         </Parameter>
         <Parameter Name="query" Type="xml">
        </Parameter>   
      </Parameters>
   </Method>
   <ElementPath IgnoreNamespaces="True">*</ElementPath>
</Query>

然后在名为query的数据集上定义一个参数,其值如下:

<Query><Where><Eq><FieldRef Name="ID"/><Value Type="Integer">1</Value></Eq></Where></Query>

通过将查询数据集参数设置为以下表达式,我还能够使查询依赖于报表参数:

="<Query><Where><Eq><FieldRef Name=""ID""/><Value Type=""Integer"">" & 
Parameters!TaskID.Value & 
"</Value></Eq></Where></Query>"
2021-04-14