我使用连接到共享点列表的共享数据源在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>
我试图以各种可能的方式将新的查询语句放入现有的查询语句中,但是它根本不起作用,尽管我没有收到错误,所以代码是有效的,但是我仍然得到未过滤的列表作为返回值。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 在这里拉我的头发!
张贴在:
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>"