Вопрос по reporting, xml, sql – SOAP-вызов с запросом по результату (SSRS, Sharepoint)
Я создал отчет в VS, используя общий источник данных, который связан со списком sharepoint. В отчете я создал набор данных с SOAP-вызовом источника данных, чтобы получить результат из списка sharepoint в таблице.
это мыльный звонок
<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!) потому что мне нужно создать запросsomewhere, Но! Я понятия не имею, где я пытался включить
<Where>
<Eq>
<FieldRef Name="ows_Title" />
<Value Type="Text">testValue</Value>
</Eq>
</Where>
в запросе мыла, но он не сработал ... Я искал intarwebz, но не смог найти никаких похожих проблем ... вроде застрял сейчас ... есть мысли по этому поводу?
EDIT
Вот запрос, который я использовал согласно сообщению в блоге Алекса Ангаса.
<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>
Я пытался поместить новый оператор запроса всеми возможными способами в существующий, но он вообще не работает, я не получаю сообщение об ошибке, хотя код действителен, но я все равно получаю нефильтрованный список в качестве возврата ...pulling my hair out here!
У вас естьFieldRef как
ows_Title
Я считаю, что это должно быть простоTitle.
Когда вы получите результаты от SOAP-запроса, все ваши имена полей начнутся с
ows_
Сообщение по адресу:
Рекомендуется использовать этот синтаксис для размещения & lt; Query & gt; узел (этот пример для получения элемента с идентификатором 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
Со следующим в деталях:
Элемент & quot; Запрос & amp; gt; запроса параметров отсутствует или недействителен
Если посмотреть на сообщение SOAP с помощью Microsoft Network Monitor, это выглядит так, как будто & lt; Query & gt; узел выходит из & lt; Query & amp; gt; и т.д., вот почему это не удается.
Однако я смог заставить это работать, используя метод, описанный в ответе Мартина Курека по адресу:
Итак, я использовал это как мой запрос:
<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>"
Смотрите вопрос и ответы дляGetListItems Webservice игнорирует мой фильтр запросов, Это показывает, как (и как не нужно) настроить вызов SOAP для включения запроса. Вам, вероятно, нужно обернуть ваш запрос другим<Query></Query>
.