3 Stimmen

SOAP-Aufruf mit Abfrage des Ergebnisses (SSRS, Sharepoint)

Ich habe einen Bericht in VS mit einer gemeinsamen Datenquelle erstellt, die mit einer Sharepoint-Liste verbunden ist. In dem Bericht habe ich ein Dataset mit einem SOAP-Aufruf an die Datenquelle erstellt, so dass ich das Ergebnis aus der Sharepoint-Liste in einer Tabelle erhalte.

Dies ist der Seifenanruf

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

Das funktioniert gut, ich habe ein Ergebnis, das ich in einem Bericht anzeigen kann, aber ich möchte die Möglichkeit haben, einen Parameter auszuwählen, nach dem das Ergebnis gefiltert wird. Ich habe einen Parameter erstellt, und wenn ich den Bericht in der Vorschau anschaue, sehe ich die Dropdownbox, mit der ich eine Auswahl aus dem Feld "Titel" treffen kann. Wenn ich dies tue, wird immer noch der erste Datensatz angezeigt, offensichtlich funktioniert es noch nicht (DUH!), denn ich muss eine Abfrage erstellen irgendwo Aber ich habe keine Ahnung, wo ich versucht habe, die

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

in der Seifenanfrage, aber es hat nicht funktioniert... Ich habe teh intarwebz gesucht, aber konnte nicht finden, alle simliar Probleme... irgendwie stecken jetzt... irgendwelche Gedanken zu diesem?

EDIT

Hier ist die Abfrage, die ich gemäß dem von Alex Angas verlinkten Blogpost verwendet habe.

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

Ich habe versucht, die neue Abfrageanweisung in jeder möglichen Weise in der bestehenden zu setzen, aber es funktioniert überhaupt nicht, ich erhalte keinen Fehler, obwohl so der Code gültig ist, aber ich erhalte immer noch eine ungefilterte Liste als Rückgabe... Ich reiße mir hier die Haare aus!

2voto

Saxon Druce Punkte 17168

Ein Beitrag bei:

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

Diese Syntax wird für die Platzierung des Knotens <Query> vorgeschlagen (in diesem Beispiel soll das Element mit der ID 1 abgerufen werden):

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

Dies würde jedoch folgende Fehlermeldung auslösen:

Webanforderung für die angegebene URL konnte nicht ausgeführt werden

Mit den folgenden Angaben im Detail:

Element <Query> des Parameters query fehlt oder ist ungültig

Wenn man sich die SOAP-Nachricht mit Microsoft Network Monitor anschaut, sieht es so aus, als ob der <Query>-Knoten in <Query> usw. umgewandelt wird, weshalb er fehlschlägt.

Ich konnte dies jedoch mit der in der Antwort von Martin Kurek beschriebenen Methode zum Laufen bringen:

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

Also habe ich dies als Anfrage verwendet:

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

Dann definierten Sie einen Parameter für den Datensatz mit dem Namen query mit dem folgenden Wert:

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

Ich konnte meine Abfrage auch von einem Berichtsparameter abhängig machen, indem ich den Abfragedatensatzparameter auf den folgenden Ausdruck setzte:

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

1voto

Alex Angas Punkte 57602

Siehe die Fragen und Antworten für GetListItems Webservice ignoriert meinen Abfragefilter . Hier erfahren Sie, wie Sie Ihren SOAP-Aufruf für eine Abfrage einrichten können (und wie nicht). Wahrscheinlich müssen Sie Ihre Abfrage mit einer weiteren <Query></Query> .

0 Stimmen

Ja, fand Informationen wie das auch, zu schlecht es ist nicht ein Format, das in VS funktioniert, wenn Sie eine freigegebene Datenquelle verwenden, die eine SharePoint-Liste ist., es akzeptiert nur das Format, das ich in meinem Beitrag beschrieben und ich versuchte die zusätzliche <Query></Query> in das, es funktioniert nicht...

0voto

Lance Perry Punkte 1256

Sie haben Ihre FeldRef como

ows_Titel

Ich glaube, es sollte einfach sein Titel .

Wenn Sie Ergebnisse von der SOAP-Anfrage erhalten, beginnen alle Feldnamen mit

ows_

0voto

Hervorragend, danke. Diese Lösung funktionierte auch für queryOptions.

In der Abfrage:

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

Und in der Parameterliste des Datasets:

Name: queryOptions

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X