query example sharepoint sharepoint-2010 caml

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>