2009-07-02 8 views
3

共有リストに接続された共有データソースを使用してVSでレポートを作成しました。レポートでは、データソースへのSOAP呼び出しを使用してデータセットを作成したので、テーブル内の共有リストから結果を取得しました。結果に関するクエリ(SSRS、Sharepoint)を使用したSOAPコール

これは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> 

これが正常に動作している、私は私がレポートに表示することができ、結果を持っているが、私は上の結果をフィルタリングするためのパラメータを選択する能力を持っていると思います。私はパラメータを作成しました。レポートをプレビューすると、Titleフィールドから選択するために使用できるドロップダウンボックスが表示されます。これを行うと、まだ最初のレコードが表示されますが、明らかにまだ動作していません(DUH!私はクエリどこかを作成する必要があるので、しかし!私は、SOAPリクエストに

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

を含めることを試みたが、それは...私はtehのintarwebzを検索したが、どのsimliar問題を見つけることができませんでした...ちょっとこだわって働いていなかった、見当がつかない今は...これについての考えは?

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> 

私は、既存のすべての可能な方法で新しいクエリ文を入れてみましたが、それがすべてでは動作しませんので、コードが有効ですが、私はエラーを取得していないが、私はまだ取得リターンとしてフィルタリングされていないリスト... ここに私の髪を引っ張ってください!

答えて

2

で始まります:

http://social.msdn.microsoft.com/forums/en-US/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;クエリ& GT。パラメータクエリの<クエリ>ノードが& LTに逃げなっているかのように見える、MicrosoftネットワークモニタでSOAPメッセージを見てから

を欠落しているか、または無効です;クエリ& GT。それが失敗する理由です。

しかし、私はこれがでマーティン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>" 
1

GetListItems Webservice ignores my query filterの質問と回答をご覧ください。これは、クエリを含めるためのSOAP呼び出しの設定方法(および設定方法)を示します。おそらく別の<Query></Query>でクエリをラップする必要があります。

+0

うん、あまりにもそのような情報を見つけに悪いのは、SharePointリストである共有データソースを使用するときにVSで動作する形式ではなく、自分の投稿で説明した形式のみを受け入れ、で、それは動作しません... – erik404

0

私はそれだけでタイトルあるべきと考えてい

ows_Title

としてあなたの するFieldRefを持っています。

あなたがSOAPリクエストから結果を取得すると、すべてのフィールド名がでポスト

ows_

+0

それを試した、幸運:-( – erik404

0

ブリリアント。このソリューションはqueryOptionsでも機能しました。クエリで

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

とデータセットのパラメータリスト内:

名:queryOptions

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

関連する問題