Вопрос по reporting, xml, sql – SOAP-вызов с запросом по результату (SSRS, Sharepoint)

3

Я создал отчет в 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!

Ваш Ответ

4   ответа
0

У вас естьFieldRef как

ows_Title

Я считаю, что это должно быть простоTitle.

Когда вы получите результаты от SOAP-запроса, все ваши имена полей начнутся с

ows_

попробовал, ну удачи :-( erik404
0

Отлично, спасибо. Это решение работает и для queryOptions.

В запросе:

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

И в списке параметров набора данных:

Имя: queryOptions

Значение:<QueryOptions><Folder>Shared Documents/MyFolder</Folder></QueryOptions>

2

Сообщение по адресу:

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

Рекомендуется использовать этот синтаксис для размещения & 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; и т.д., вот почему это не удается.

Однако я смог заставить это работать, используя метод, описанный в ответе Мартина Курека по адресу:

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

Смотрите вопрос и ответы дляGetListItems Webservice игнорирует мой фильтр запросов, Это показывает, как (и как не нужно) настроить вызов SOAP для включения запроса. Вам, вероятно, нужно обернуть ваш запрос другим<Query></Query>.

Да, тоже нашел такую информацию, к сожалению, это не тот формат, который работает в VS, когда вы используете общий источник данных, который является списком SharePoint. Он принимает только тот формат, который я описал в своем посте, и я попробовал дополнительный & lt ; Запрос & GT; & Lt; / Запрос & GT; в этом он не работает ... erik404

Похожие вопросы