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>