2016-05-27 12 views
0

従業員リストから新しい従業員を表示するSharePointページがあります。私は従業員の開始日を使用し、30日間表示します。私たちは2つの部署をアウトソーシングしており、管理者は第三者の会社からのものであるため、それらを新しい従業員として見たくはありません。以下は私が試したコードですが、動作させることはできません。私は 'And'を3つのフィルタをすべてインクルードするように移動しました。エラーが発生します。 '(soap:t.SharePoint.SoapServer.SoapServerExceptionのServerExceptionがスローされました。このアクションを完了できません。もう一度試してください.0x80004005)' 「Neq」の近くで「And」を移動すると、無視されます。私は開始日の30日を保ち、2つの部門を除外しようとしています。Sharepoint CAML Fliter

`<Query> 
    <OrderBy> 
    <FieldRef Name="Full_x0020_Name"/> 
    </OrderBy> 
    <Where> 
    <And> 
    <Geq> 
     <FieldRef Name="StartDate"/> 
     <Value Type="DateTime"> 
     <Today OffsetDays="-30"/> 
     </Value> 
     </Geq> 
    <Neq> 
     <FieldRef Name="Department"/> 
    <Value Type="Text">G4S Security</Value> 
    </Neq> 
    <Neq> 
    <FieldRef Name="Department"/> 
    <Value Type="Text">Budd Group</Value> 
    </Neq> 
    </And> 
     </Where> 
</Query>` 

答えて

0

解決策が見つかりました。また、And内には2つしか存在できません。これは私が以下で変更したコードです。

'<Where> 
<And> 
    <And> 
    <Geq> 
     <FieldRef Name="StartDate"/> 
     <Value Type="DateTime"> 
     <Today OffsetDays="-30"/> 
     </Value> 
    </Geq> 
    <Neq> 
     <FieldRef Name="Department"/> 
      <Value Type="Text">G4S Security</Value> 
    </Neq> 
    </And> 
    <Neq> 
     <FieldRef Name="Department"/> 
     <Value Type="Text">Budd Group</Value> 
    </Neq> 
    </And> 
    </Where>' 
0

https://msdn.microsoft.com/en-us/library/office/ms196939(v=office.14).aspx

この要素は、他のANDとORの要素の中にネストすることができます。サーバーは、無制限の複雑な照会をサポートします。 ただし、与えられた任意の要素は2つの結合のみを持つことができます;つまり、2つの子要素のみです。あなたが三つ以上の条件をconjoinする必要がある場合は、巣と要素[...]

<Where> 
    <And> 
     <And> 
      <Geq> 
       <FieldRef Name="StartDate"/> 
       <Value Type="DateTime"> 
        <Today OffsetDays="-30"/> 
       </Value> 
      </Geq> 
      <Neq> 
       <FieldRef Name="Department"/> 
       <Value Type="Text">G4S Security</Value> 
      </Neq> 
     </And> 
     <Neq> 
      <FieldRef Name="Department"/> 
      <Value Type="Text">Budd Group</Value> 
     </Neq> 
    </And> 
</Where> 
+0

ありがとうございます – kliscinsky

0

必要queryメソッド自体の問題もあります。 "list"クラスで "query"メソッドを使用している場合は、<Query></Query>タグをCAMLに使用することはできません。その理由は、このメソッドがすでにこのタグを使用してクエリをラップしていて、それを追加するとクエリが中断されるためです。 例:

Private Function GenerateCamlForCurrentUserMessages(list As SPList, isActiveOnly As Boolean) As SPQuery 
     Dim qResult As SPQuery 
     Dim sCaml As String = "" 
     Dim web As SPWeb = SPContext.Current.Web 

     If isActiveOnly Then 
      sCaml = "<Where><And><Eq><FieldRef Name='Author' /><Value Type='User'>" & web.CurrentUser.Name.ToString() & "</Value></Eq><Eq><FieldRef Name='IsActive' /><Value Type='Boolean'>1</Value></Eq></And></Where>" 
     Else 
      sCaml = "<Where><Eq><FieldRef Name='Author' /><Value Type='User'>" & web.CurrentUser.Name.ToString() & "</Value></Eq></Where>" 
     End If 
     qResult = New SPQuery() 
     'sCaml = sCaml & list.DefaultView.Query 
     qResult.Query = sCaml 
     Return qResult 

    End Function 
関連する問題