2014-08-27 30 views
0

我的問題是關於caml查詢SP2010, 我有colums如下:國家,角色,物種,物種,主題,文檔類型,搜索文本。 用戶可能會按國家(多個 - >英國,法國,比利時)搜索並鍵入文檔名稱,如Doc_num_one.txt,並添加其他條件,如角色,種類,種類,主題,文檔類型。我嘗試過不同的查詢,但我想我被困住了。 下面是我試過到目前爲止:CAM +查詢與IN + AND或其他

<Query> 
    <Where> 
     <In> 
      <FieldRef Name="Country"/> 
      <Values> 
       <Value Type="Lookup">United Kingdom</Value> 
       <Value Type="Lookup">Poland</Value> 
       <Value Type="Lookup">Belgium</Value> 
      </Values> 
     </In> 
    </Where> 
</Query> 

<Query> 
    <Where> 
     <And> 
      <Eq> 
       <FieldRef Name="Title" /> 
       <Value Type="Text">doc num two</Value> 
      </Eq> 
      <Or> 
       <And> 
        <Eq> 
         <FieldRef Name="Country" /> 
         <Value Type="Lookup">United Kingdom</Value> 
        </Eq> 
        <Eq> 
         <FieldRef Name="Role" /> 
         <Value Type="Lookup">Super Admin</Value> 
        </Eq> 
       </And> 
       <And> 
        <Eq> 
         <FieldRef Name="Country" /> 
         <Value Type="Lookup">Belgium</Value> 
        </Eq> 
        <Eq> 
         <FieldRef Name="Role" /> 
         <Value Type="Lookup">Super Admin</Value> 
        </Eq> 
       </And> 
       <And> 
        <Eq> 
         <FieldRef Name="Country" /> 
         <Value Type="Lookup">Poland</Value> 
        </Eq> 
        <Eq> 
         <FieldRef Name="Role" /> 
         <Value Type="Lookup">Super Admin</Value> 
        </Eq> 
       </And> 
      </Or> 
     </And> 
    </Where> 
</Query> 

解決方案:

<Query> 
<Where> 
<And> 
<In> 
<FieldRef Name="Country"/> 
<Values> 
    <Value Type="Lookup">United Kingdom</Value> 
    <Value Type="Lookup">Poland</Value> 
    <Value Type="Lookup">Belgium</Value> 
</Values> 
</In> 
<In> 
<FieldRef Name="Role"/> 
<Values> 
    <Value Type="Lookup">Super Admin</Value> 
    <Value Type="Lookup">Admin</Value> 
    <Value Type="Lookup">User</Value> 
</Values> 
</In> 
</And> 
</Where> 
</Query> 
+0

以及該查詢的輸出是什麼。更重要的是哪些不起作用? – Mark 2014-08-27 08:43:22

+0

第一個工作正常,但它有可能是40個國家+其他標準。我提到了問題。所以我想知道如何構造查詢國家(多個)+標題,角色,物種,物種,主題,文檔類型 – Dalli 2014-08-27 09:02:19

回答

1

第二個查詢不工作,因爲它具有內的兩個以上的子元素<Or>元素。如果你想測試更多的子條件,你必須引入輔助元素:

<Or> 
    <And>...</And> 
    <And>...</And> 
    <And>...</And> 
    <And>...</And> 
    <And>...</And> 
</Or> 

成爲

<Or> 
    <And>...</And> 
    <Or> 
     <And>...</And> 
     <Or> 
      <And>...</And> 
      <Or> 
       <And>...</And> 
       <And>...</And> 
      </Or> 
     </Or> 
    </Or> 
</Or> 

這同樣適用於<And>元素。

+0

40不同的國家+文本(由用戶提供)+標題,角色,物種,物種,主題,文檔類型。我試圖通過js創建查詢。你如何看待它的樣子? – Dalli 2014-08-27 09:33:48

+0

然後你必須創建更多嵌套的''。當然,它看起來不會很好(我在我的例子中增加了兩個'')。我會把所有''放到一個數組中,並寫一個幫助函數來創建''。 – Stephan 2014-08-27 09:58:28