SOAP调用与结果查询(SSRS时,SharePoint)(SOAP call with query

2019-06-24 19:10发布

我使用连接到SharePoint列表的共享数据源创建的VS的报告。 在报告中,我创建了一个SOAP调用数据源的数据集,所以我得到一个表中的SharePoint列表的结果。

这是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>

这工作得很好,我有一个结果,我可以在一份报告中显示,但我希望有选择参数筛选的结果的能力。 我创建了一个参数,当我预览报告我看,我可以使用,使从标题字段选择的dropdownbox,我这样做时,它仍然显示的第一条记录,显然它好好尝试工作,但(DUH!)因为我需要的地方创建一个查询,但! 我不知道在哪里,我试图包括

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

在SOAP请求,但它没有工作...我已经搜查德intarwebz但找不到任何simliar问题...现在有点卡住......对此有何看法?

编辑

下面是我根据博客帖子亚历安加斯连接使用的查询。

<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>

我试图把新的查询语句在现有的一切可能的方式,但它并没有在所有的工作,但这样的代码是有效的我没有得到一个错误,但我仍然得到一个未经过滤的列表作为回报... 拉我的头发了!

Answer 1:

发表于:

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

使用此语法的<查询>节点的位置(本示例中是为1的ID检索项)建议:

<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;查询&GT; 参数查询的缺失或无效

从寻找与Microsoft网络监视器SOAP消息,它看起来好像在<查询>节点是越来越逃脱到&lt;查询&GT; 等等,这就是为什么它失败。

不过,我能得到这个使用马丁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><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>"


Answer 2:

看到问题和答案的GetListItems Webservice的忽略我的查询过滤器 。 这说明您如何(以及如何不)设置你的SOAP调用包括查询。 你可能需要用另一个包裹查询<Query></Query>



Answer 3:

你有你的FieldRef

ows_Title

我相信这应该只是标题

当你从SOAP请求所有的字段名称将开始结果

ows_



Answer 4:

辉煌,谢谢。 该解决方案为queryOptions也。

在查询:

<Parameter Name="queryOptions" Type="xml">
</Parameter>

而在数据集中的参数列表:

名称:queryOptions

值: <QueryOptions><Folder>Shared Documents/MyFolder</Folder></QueryOptions>



文章来源: SOAP call with query on result (SSRS, Sharepoint)