簡體   English   中英

使用CAML正確嵌套復合和/或語句

[英]Properly Nesting Compound AND / OR Statements Using CAML

我正在利用SharePoint 2013環境中的SPservices創建對當前用戶唯一的篩選視圖。 實際上,當用戶訪問頁面時,他們會獲得他們已上傳到特定庫的文檔的自定義源。

我可以成功查詢庫並按照我想要的方式呈現結果,但是當我嘗試創建復合CAML查詢時,我不斷收到錯誤。 我已經嘗試使用這里的各種資源來手動構建這個查詢(並且做網絡限制我不能使用U2U CAML構建器工具),但是我一直在拋出錯誤。 我開始做簡單的查詢並且它正在工作,但是一旦我嘗試進入我的第三個和第四個“OR”語句(包括一個IsNull參數),我就碰壁了。 我認為我不恰當地嵌套我的陳述,並希望在確定我做錯了什么方面有所幫助。

    <Where>
      <And>
        <Contains>
           <FieldRef Name='Author' />
           <Value Type='User'>" + userName + "</Value>
        </Contains>

      <And>
        <Eq>
          <FieldRef Name='ContentType' />
          <Value Type='Computed'>Document</Value>
        </Eq>
      </And>
      <Or>
        <Or>
          <Or>
            <Or>
              <Eq>
                <FieldRef Name='sensitivity' />
                <Value Type='Choice'>Low</Value>
              </Eq>
              <Eq>
                <FieldRef Name='sensitivity' />
                <Value Type='Choice'>Medium</Value>
              </Eq>
            </Or>
              <Eq>
                <FieldRef Name='sensitivity' />
                <Value Type='Choice'>High</Value>
              </Eq>
          </Or>
         </Or>
        <IsNull>
           <FieldRef Name='sensitivity' />
        </IsNull>
       </Or>
     </And>
    </Where>

期望的結果將是當前用戶上傳/創建的項目的輸出,其中內容類型等於“文檔”並且靈敏度(選擇)字段等於低,中,高或為空。

我覺得我很親密,但我犯了一個愚蠢的錯誤。 對於上下文,語句中的“userName”引用是一個正常運行的javascript變量。

如果沒有像U2U CAML構建工具那樣的工具,包圍可能會非常混亂。 我感覺到你的痛苦。

我認為你的問題可能是最后的問題。 我相信你想要的是NotNull

  <IsNotNull>  
    <FieldRef Name='sensitivity' />   
  </IsNotNull>  

作為最后一個溝渠,您可能只能通過文件公司的用戶查詢所有文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM