sharepoint - example - ¿Es esta la sintaxis adecuada para Caml Querys?
caml query example (1)
Tengo un Caml Query que funciona así:
<View><Query><Where><Eq><FieldRef Name=/'ptli_TravelersEmail/' /><Value Type=/'Text/'>'' + payeename + ''</Value></Eq></Where></Query></View>
... que recupera "registros" de una lista Sharepoint donde el valor en el campo ''ptli_TravelersEmail'' equivale al valor de la contraseña pasada "payeename".
Para agregar otra cláusula a la consulta, para recuperar "registros" donde el primero es verdadero pero también donde el valor en el campo ''ptli_preparer'' equivale al valor del argumento "nombre de usuario" pasado, ¿necesito repetir un entero "Where.Eq.FieldRef Name.Value..Value.Eq.Where" sección, como esta:
<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>
... ¿o está desactivada mi sintaxis?
Podría intentarlo y descubrirlo, lo sé, pero el proceso de compilación / ejecución / prueba en Sharepoint lleva bastante tiempo, y espero que algún experto en Caml lo sepa de inmediato.
Aquí está el formato general para una consulta CAML :
<View>
<Query>
<Where>
<Eq>
<FieldRef Name="Internal_Name_of_field" />
<Value Type="Text">The value to filter against</Value>
</Eq>
</Where>
</Query>
</View>
<Eq>
significa "Igual". También puede usar comparaciones como <Neq>
(No es igual), <Lt>
(Menor que), <Leq>
(Menor o igual que), <Gt>
(Mayor que), <Geq>
(Mayor que o igual a ), <Contains>
, <IsNull>
y <IsNotNull>
.
Cuando desee que su consulta CAML tenga múltiples condiciones, puede combinar dos de ellas dentro de un conjunto de etiquetas <And>
( documentadas aquí ).
<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>
Puede anidar etiquetas <And>
dentro de otras etiquetas <And>
y <Or>
para crear consultas arbitrariamente complicadas.
<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>
La sintaxis exacta utilizada en el elemento <Value>
puede variar según el tipo de campo que se compara. Type="Text"
funciona para campos de texto de una sola línea, pero los campos de búsqueda, campos de fecha y campos de personas o grupos tienen una sintaxis diferente.
Para consultas CAML más avanzadas, observe la ubicación de los elementos OrderBy
y RowLimit
:
<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>