2009-07-02 12 views
3

Ich erstellte einen Bericht in VS mithilfe einer freigegebenen Datenquelle, die mit einer Sharepoint-Liste verbunden ist. Im Bericht habe ich ein Dataset mit einem SOAP-Aufruf für die Datenquelle erstellt, sodass ich das Ergebnis aus der Sharepoint-Liste in einer Tabelle erhalte.SOAP-Aufruf mit Abfrage auf Ergebnis (SSRS, 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> 

dies der Anruf Seife ist

Das funktioniert gut, habe ich ein Ergebnis, das ich in einem Bericht zeigen kann, aber ich möchte die Möglichkeit haben, einen Parameter auszuwählen, auf das Ergebnis zu filtern. Ich habe einen Parameter erstellt, und wenn ich eine Vorschau des Berichts sehe, sehe ich die Dropdownbox, mit der ich eine Auswahl aus dem Feld Titel treffen kann. Wenn ich dies tue, zeigt es immer noch den ersten Datensatz, offensichtlich funktioniert es noch nicht (DUH!) weil ich eine Abfrage irgendwo erstellen muss, aber! Ich habe keine Ahnung, wo ich

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

in der die Seife Anfrage schließen versucht, aber es hat nicht funktioniert ... Ich habe teh intarwebz gesucht, konnte aber keine simliar Probleme finden ... irgendwie stecken jetzt ... irgendwelche Gedanken dazu?

EDIT

Hier ist die Abfrage, die ich den Blogpost nach Alex Angas verknüpft verwendet.

<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 Abfrage-Anweisung in jeder möglichen Art und Weise in die bestehende zu setzen, aber es funktioniert nicht funktioniert, habe ich nicht einen Fehler, obwohl so der Code gültig ist, aber ich habe immer noch ein ungefilterte Liste als Rückkehr ... zieht mir die Haare hier raus!

Antwort

2

Ein Beitrag beginnen:

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

Empfohlene Verwendung dieser Syntax für die Platzierung der <Abfrage> Knoten (in diesem Beispiel wird das Element mit der ID 1 abgerufen):

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

aber dies würde mir die folgende Fehlermeldung:

fehlgeschlagen Web-Anfrage für die angegebene URL

Mit dem folgend im Detail auszuführen:

Element & lt; Abfrage & gt; von Parameterabfrage wird an der SOAP-Nachricht mit Microsoft Network Monitor fehlende oder ungültige

Vom Blick sieht es aus, als ob die <Abfrage> Knoten zu & lt entkam wird immer; Abfrage & gt; usw., weshalb es fehlschlägt.

Allerdings kann ich dies in Martin Kurek Antwort beschrieben unter Verwendung des Verfahrens zur Arbeit an:

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

Also, habe ich dies als meine Frage:

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

Und definiert dann einen Parameter in der Datenmenge namens Abfrage mit dem folgenden Wert:

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

Ich war auch in der Lage zu meiner Anfrage abhängig von einem Bericht Parameter, indem Sie die Abfrage-Datenmenge Parameter auf den folgenden Ausdruck zu machen:

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

Siehe die Fragen und Antworten für GetListItems Webservice ignores my query filter. Dies zeigt Ihnen, wie (und wie nicht) Sie Ihren SOAP-Aufruf so einrichten, dass er eine Abfrage enthält. Sie müssen wahrscheinlich Ihre Abfrage mit einem anderen <Query></Query> umbrechen.

+0

Ja, auch Informationen wie das gefunden, zu Es ist nicht ein Format, das in VS funktioniert, wenn Sie eine Shared Data Source verwenden, die eine SharePoint-Liste ist. Es akzeptiert nur das Format, das ich in meinem Beitrag beschrieben habe, und ich habe das Extra 01 versucht in dem, es funktioniert nicht ... – erik404

0

Sie haben Ihre FieldRef als

ows_Title

Ich glaube, es sollte nurTitel sein.

Wenn Sie erhalten Ergebnisse aus dem SOAP-Anforderung alle Feldnamen mit

ows_

+0

versuchte es, nu glück :-( – erik404

0

Brillianten, danke. Diese Lösung funktionierte auch für Abfrageoptionen.

In der Abfrage:

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

Und in der Parameterliste des Datensatzes:

Name: queryOptions

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

Verwandte Themen