具有4个条件的CAML查询将引发此错误“无法完成此操作\ n \ n请重试”

问题描述

我有以下CAML查询:-

<View Scope=\"RecursiveAll\"><Query><Where>
<And>
<Contains><FieldRef Name =\"ProjectStage1\" /><Value Type = \"Choice\">closed</Value></Contains>
<Eq><FieldRef Name =\"ProjectPriority1\" /><Value Type = \"Choice\">(1) High</Value></Eq>
<And>
<Leq><FieldRef Name=\"Modified\" /><Value Type=\"DateTime\" IncludeTimeValue=\"False\"><Today OffsetDays=\"-7\"/></Value></Leq>
<Geq><FieldRef Name=\"Modified\" /><Value Type=\"DateTime\" IncludeTimeValue=\"False\"><Today OffsetDays=\"-14\"/></Value></Geq>
</And></And>
</Where></Query></View>

但是我收到此错误:-

Cannot complete this action.\n\nPlease try again.

有人可以建议吗?

解决方法

我不确定,但是我认为您在查询中缺少一个<And>标签。

请确保它不符合MSDN - AND此处定义的规则。

我没有可能再次检查它,但是也许这样的事情应该起作用:

<View Scope=\"RecursiveAll\">
    <Query>
        <Where>
            <And>
                <Contains>
                    <FieldRef Name =\"ProjectStage1\" />
                    <Value Type = \"Choice\">closed</Value>
                </Contains>
                <And>
                    <Eq>
                        <FieldRef Name =\"ProjectPriority1\" />
                        <Value Type = \"Choice\">(1) High</Value>
                    </Eq>
                    <And>
                        <Leq>
                            <FieldRef Name=\"Modified\" />
                            <Value Type=\"DateTime\" IncludeTimeValue=\"False\">
                                <Today OffsetDays=\"-7\"/>
                            </Value>
                        </Leq>
                        <Geq>
                            <FieldRef Name=\"Modified\" />
                            <Value Type=\"DateTime\" IncludeTimeValue=\"False\">
                                <Today OffsetDays=\"-14\"/>
                            </Value>
                        </Geq>
                    </And>
                </And>
            </And>
        </Where>
    </Query>
</View>

基本上,当有多个“和”条件时,我们应该放弃这些规则:

1. Single Condition

<Where>     
            <Eq><FieldRef Name=’Name’ /> <Value Type=’Text’>Aasai</Value></Eq>
</Where>

2. Two Condtion
<Where>
          <And>
            <Eq><FieldRef Name=’Title’ />  <Value Type=’Text’>Mr</Value></Eq>
            <Eq><FieldRef Name=’Name’ /> <Value Type=’Text’>Aasai</Value></Eq>
         </And>
</Where>

 3. Three Condtion
 <Where>
      <And>
         <And>
            <Eq><FieldRef Name=’Title’ />  <Value Type=’Text’>Mr</Value></Eq>
            <Eq><FieldRef Name=’Name’ /> <Value Type=’Text’>Aasai</Value></Eq>
         </And>
         <Eq><FieldRef Name=’Address’ /> <Value Type=’Text’>Chennai</Value></Eq>
      </And>
   </Where>

4. Four Condtion
<Where>
      <And>
         <And>
            <Eq><FieldRef Name=’Title’ />  <Value Type=’Text’>Mr</Value></Eq>
            <Eq><FieldRef Name=’Name’ /> <Value Type=’Text’>Aasai</Value></Eq>
         </And>
        <And>
         <Eq><FieldRef Name=’Address’ /> <Value Type=’Text’>Chennai</Value></Eq>
         <Eq><FieldRef Name=’Country’ /> <Value Type=’Text’>India</Value></Eq>
         </And>
      </And>
   </Where>