Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 具有多个或多个条件的CAMLQuery?_Sharepoint_Caml - Fatal编程技术网

Sharepoint 具有多个或多个条件的CAMLQuery?

Sharepoint 具有多个或多个条件的CAMLQuery?,sharepoint,caml,Sharepoint,Caml,我试图在下面的CAMLQuery中添加另一个OR条件,但似乎没有任何效果。有人能帮忙吗 这是现有的和正在工作的查询。我正在尝试添加另一个Or条件,以便查询是,(Permissions_Type=x1或Permissions_Type=x2)和(Category=y1或Category=y2)以及(User_Specific=z1或User_Specific=z2) 使用者 超级用户 调查 通知 我希望这是我的附加条件。。。或多或少,其中User_Specific为null或User_Spec

我试图在下面的CAMLQuery中添加另一个OR条件,但似乎没有任何效果。有人能帮忙吗

这是现有的和正在工作的查询。我正在尝试添加另一个Or条件,以便查询是,(Permissions_Type=x1或Permissions_Type=x2)和(Category=y1或Category=y2)以及(User_Specific=z1或User_Specific=z2)


使用者
超级用户
调查
通知
我希望这是我的附加条件。。。或多或少,其中User_Specific为null或User_Specific=z

<Or>
    <IsNull><FieldRef Name="User_Specific"/></IsNull>
    <Eq>
        <FieldRef Name="User_Specific"/>
        <Value Type="Number">9</Value>
    </Eq>
</Or>

9

需要记住的是,每个
节点都需要两个子节点

当您有两个以上的AND或or条件时,需要根据需要使用嵌套的
节点组合它们

在绘制逻辑图时,将AND和OR视为每个函数只包含两个参数可能会有所帮助:

AND( 
    OR(permissions=user, permissions=superuser), 
    AND( 
        OR(category=survey, category=notification), 
        OR(user_specific=z1, user_specific=z2)
    )
)
当您将其转换为CAML时,您将得到如下结果:

<Where>
    <And>
        <And>
            <Or>
                <Eq>
                    <FieldRef Name="Permissions_Type"/>
                    <Value Type="Lookup">User</Value>
                </Eq>
                <Eq>
                    <FieldRef Name="Permissions_Type"/>
                    <Value Type="Lookup">Superuser</Value>
                </Eq>
            </Or>
            <And>
                <Or>
                    <Eq>
                        <FieldRef Name="Category"/>
                        <Value Type="Text">Survey</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name="Category"/>
                        <Value Type="Text">Notification</Value>
                    </Eq>
                </Or>
                <Or>
                    <IsNull><FieldRef Name="User_Specific"/></IsNull>
                    <Eq>
                        <FieldRef Name="User_Specific"/>
                        <Value Type="Number">9</Value>
                    </Eq>
                </Or>
            </And>
        </And>
        <Geq>
            <FieldRef Name="Event_End" />
            <Value Type="DateTime"><Today Offset="-1" /></Value>
        </Geq>
    </And>
</Where>

使用者
超级用户
调查
通知
9

(最后,我不得不为您的
条件添加一个额外的

您的工作查询没有按照上面描述的方式工作。它本质上是说:
(Permissions\u Type=a或Permissions\u Type=b)和(Category=x或Category=y)
那么,在向其添加另一组或条件时,您希望它保持这种行为吗?类似于
(权限类型=a或权限类型=b)和(类别=x或类别=y)以及(用户特定=j或用户特定=k)
?感谢您的澄清。我更新了。很明显,我的用户特定的列名或列类型有问题。不知道具体是什么。无论如何。我在不同的列名下删除并重新创建。成功了!:)
<Where>
    <And>
        <And>
            <Or>
                <Eq>
                    <FieldRef Name="Permissions_Type"/>
                    <Value Type="Lookup">User</Value>
                </Eq>
                <Eq>
                    <FieldRef Name="Permissions_Type"/>
                    <Value Type="Lookup">Superuser</Value>
                </Eq>
            </Or>
            <And>
                <Or>
                    <Eq>
                        <FieldRef Name="Category"/>
                        <Value Type="Text">Survey</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name="Category"/>
                        <Value Type="Text">Notification</Value>
                    </Eq>
                </Or>
                <Or>
                    <IsNull><FieldRef Name="User_Specific"/></IsNull>
                    <Eq>
                        <FieldRef Name="User_Specific"/>
                        <Value Type="Number">9</Value>
                    </Eq>
                </Or>
            </And>
        </And>
        <Geq>
            <FieldRef Name="Event_End" />
            <Value Type="DateTime"><Today Offset="-1" /></Value>
        </Geq>
    </And>
</Where>