当 OR 中超过 2 个变量时出现 CAML 查询错误



在我的SharePoint CAML查询中,当使用两个输入进行筛选时,它是成功的。但是,当我有 3 个或更多时,它失败了。

使用两个以上的输入时,是否使用不同的格式?


通行证(2 个字段(:

<Where>
<And>
<Or>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H1</Value></Eq>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H2</Value></Eq>
</Or>
<Neq><FieldRef Name ="ContentType"/><Value Type="Text">Document</Value></Neq>
</And>
</Where>

失败(3 个字段(:

<Where>
<And>
<Or>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H1</Value></Eq>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H2</Value></Eq>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H3</Value></Eq>
</Or>
<Neq><FieldRef Name ="ContentType"/><Value Type="Text">Document</Value></Neq>
</And>
</Where>

错误:

无法完成此操作。请重试。在 Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx( 在 Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback2(IListItemSqlClient pSqlClient, String bstrUrl, String bstrListName, String bstrViewName, String bstrViewXml, SAFEARRAYFLAGS fSafeArrayFlags, ISP2DSafeArrayWriter pSACallback, ISPDataCallback pPagingCallback, ISPDataCallback pPPagePrevCallback, ISPDataCallback pFilterLinkCallback, ISPDataCallback pSchemaCallback, ISPDataCallback pRowCountCallback, Boolean& pbMaximalView( at Microsoft.SharePoint.SPListItemCollection.EnsureListItemsData(( at Microsoft.SharePoint.SPListItemCollection.get_Count((

在 CAML 语法中,<Or><And>以及二进制运算符。因此,它们必须只有两个操作数。如果您需要更多,则必须相应地嵌套它们。在您的情况下:

<Where>
<And>
<Or>
<Or>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H1</Value></Eq>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H2</Value></Eq>
</Or>
<Eq><FieldRef Name="Header1Ref"/><Value Type="Text">H3</Value></Eq>
</Or>
<Neq><FieldRef Name ="ContentType"/><Value Type="Text">Document</Value></Neq>
</And>
</Where>

相关内容

  • 没有找到相关文章

最新更新