2015-10-13 199 views
0

我有一个工作CAML查询,像这样:这是适用于Caml Querys的语法吗?

<View><Query><Where><Eq><FieldRef Name=\'ptli_TravelersEmail\' /><Value Type=\'Text\'>' + payeename + '</Value></Eq></Where></Query></View> 

...从哪里在“ptli_TravelersEmail”字段中的值等于值SharePoint列表检索“记录”传入的ARG“收款人姓名”。

要向查询添加另一个子句,要检索前者保持为true的“记录”,而且还要将'ptli_preparer'字段中的值等同于传入的arg“用户名”的值,我需要重复整个 “Where.Eq.FieldRef Name.Value..Value.Eq.Where” 部分,像这样:

<View><Query><Where><Eq><FieldRef Name=\'ptli_TravelersEmail\' /><Value Type=\'Text\'>' + payeename + '</Value></Eq></Where><Where><Eq><FieldRef Name=\'ptli_preparer\' /><Value Type=\'Text\'>' + username + '</Value></Eq></Where></Query></View> 

...或者是我的语法了吗?

我可以试试看,我知道,但Sharepoint中的构建/运行/测试过程需要相当长的一段时间,我希望有一些Caml专家能够马上知道。

+0

它不是很清楚,如果你想从任何条件或者如果两个条件才能获得匹配来获取记录记录。 –

+0

都必须匹配。 –

回答

3

下面是一个CAML query的一般格式为: “等于”

<View> 
    <Query> 
     <Where> 
      <Eq> 
       <FieldRef Name="Internal_Name_of_field" /> 
       <Value Type="Text">The value to filter against</Value> 
      </Eq> 
     </Where> 
    </Query> 
</View> 

<Eq>指您也可以使用像<Neq>比较(不等于),<Lt>(小于),(大于)<Leq>(小于或等于),<Gt><Geq>(大于或等于),<Contains><IsNull><IsNotNull>

当您希望CAML查询具有多个条件时,可以将它们中的两个组合在一组<And>标记(documented here)中。

<Where> 
    <And> 
     <Eq> 
      <FieldRef Name="Internal_Name_of_field1" /> 
      <Value Type="Text">The value to filter against</Value> 
     </Eq> 
     <Eq> 
      <FieldRef Name="Internal_Name_of_field2" /> 
      <Value Type="Text">The value to filter against</Value> 
     </Eq> 
    </And> 
</Where> 

您可以窝内的其他<And><Or>标签<And>代码建立任意复杂的查询。

<Where> 
    <And> 
     <Eq> 
      <FieldRef Name="Internal_Name_of_field1" /> 
      <Value Type="Text">The value to filter against</Value> 
     </Eq> 
     <And> 
      <Eq> 
       <FieldRef Name="Internal_Name_of_field2" /> 
       <Value Type="Text">The value to filter against</Value> 
      </Eq> 
      <Eq> 
       <FieldRef Name="Internal_Name_of_field3" /> 
       <Value Type="Text">The value to filter against</Value> 
      </Eq> 
     </And> 
    </And> 
</Where> 

<Value>元件使用可以根据场的类型而变化的确切的语法被比较对。 Type="Text"适用于单行文本字段,但查找字段,日期字段和人员或组字段具有不同的语法。

对于更高级的CAML查询,请注意OrderByRowLimit元素的位置:

<View> 
    <Query> 
     <Where> 
      <Eq> 
       <FieldRef Name="Internal_Name_of_field" /> 
       <Value Type="Text">The value to filter against</Value> 
      </Eq> 
     </Where> 
     <OrderBy> 
      <FieldRef Name="Internal_Name_of_field" /> 
     </OrderBy> 
    </Query> 
    <RowLimit>500</RowLimit> 
</View> 
+0

您必须是Sharepoint盛大的便便会员,头部总监,顶级猫等。 –