karine bosch andy-van_steenbergen-caml-spsbe12

23
Andy Van Steenbergen Karine Bosch SharePoint MVP CAML is NOT dead!

Upload: biwug

Post on 05-Dec-2014

735 views

Category:

Technology


0 download

DESCRIPTION

When LINQ was introduced into SharePoint 2010 it seamed like the way to go. But more and more we see that LINQ can have a performance impact. Now we see that CAML gains on importance again but it remains an exotic language that not everybody wants to learn. Therefore tools like the new CAML Designer can come in handy.

TRANSCRIPT

Page 1: Karine bosch andy-van_steenbergen-caml-spsbe12

Andy Van Steenbergen

Karine BoschSharePoint MVP

CAML is NOT dead!

Page 2: Karine bosch andy-van_steenbergen-caml-spsbe12

A big thanks to our sponsorsPlatinum Sponsors

Gold Premium Sponsors

Gold Sponsors

Venue Sponsor

Page 3: Karine bosch andy-van_steenbergen-caml-spsbe12

About Us• Karine Bosch

• SharePoint MVP since 2009

• Technical assistent of Patrick Tisseghem till September 2008

• Developer of the U2U CAML Builder

• Technical Lead SharePoint Competence Center @ ING

• Andy Van Steenbergen

• SharePoint consultant @ Ordina

• Vice-president BIWUG

Page 4: Karine bosch andy-van_steenbergen-caml-spsbe12

Agenda

• What is CAML?

• CAML Basics

• CAML Deep Dive

• The new CAML Designer

Page 5: Karine bosch andy-van_steenbergen-caml-spsbe12

What is CAML?• Collaborative Application Markup Language

• XML-based query language

• Introduced in SharePoint 2001

• SharePoint 2010: LINQ to SharePoint

Page 6: Karine bosch andy-van_steenbergen-caml-spsbe12

The Basics• Ordery By

• Where

• ViewFields

• Query options

Page 7: Karine bosch andy-van_steenbergen-caml-spsbe12

Order By Clause• To sort list items

• In ascending order

• In descending order

• On more than 1 field

<OrderBy> <FieldRef Name=“Title” /></OrderBy>

<OrderBy> <FieldRef Name=“Title” Ascending=“False” /></OrderBy>

<OrderBy> <FieldRef Name=“Title” /> <FieldRef Name=“LastName” Ascending=“False”/></OrderBy>

Page 8: Karine bosch andy-van_steenbergen-caml-spsbe12

Where Clause• Operators

• IsNull - IsNotNull

• Eq – Neq

• Geq – Gt – Leq – Lt

• BeginsWith

• Contains

• Includes

• In

• Example of a simple syntax:

<Where> <Eq> <FieldRef Name=“LastName” />

<Value Type=“Text”>Van Steenbergen</Value> </Eq></Where>

Page 9: Karine bosch andy-van_steenbergen-caml-spsbe12

Where Clause• More than one criterium

• Nested XML

• And / Or operators

• Example of a nested syntax

<Where> <Or> <Eq> <FieldRef Name=“LastName” />

<Value Type=“Text”>Van Steenbergen</Value> </Eq>

<Eq> <FieldRef Name=“LastName” />

<Value Type=“Text”>Bosch</Value> </Eq> </Or></Where>

Page 10: Karine bosch andy-van_steenbergen-caml-spsbe12

Where Clause• Example of a complex syntax

<Where> <Or> <Or> <Eq> <FieldRef Name=“LastName” />

<Value Type=“Text”>Van Steenbergen</Value> </Eq>

<Eq> <FieldRef Name=“LastName” />

<Value Type=“Text”>Bosch</Value> </Eq> </Or> <Gt> <FieldRef Name=“DownloadStart” />

<Value Type=“DateTime”>2012-04-28T00:00:00Z</Value> </Gt> </Or></Where>

Page 11: Karine bosch andy-van_steenbergen-caml-spsbe12

Where Clause for DateTime fields• DateTime Fields

• Query on date only

• Query on date and time value

<Where> <Gt> <FieldRef Name=“DownloadStart” />

<Value Type=“DateTime”>2012-04-28T00:00:00Z</Value> </Gt></Where>

<Where> <Gt> <FieldRef Name=“DownloadStart” IncludeTimeValue=“True”/>

<Value Type=“DateTime”>2012-04-28T00:00:00Z</Value> </Gt></Where>

Page 12: Karine bosch andy-van_steenbergen-caml-spsbe12

Where Clause for Lookup fields• Lookup fields

• Query on lookup value

• Query on ID

<Where> <Eq> <FieldRef Name=“Country” />

<Value Type=“Lookup”>Belgie</Value> </Eq></Where>

<Where> <Eq> <FieldRef Name=“Country” LookupId=‘True’/>

<Value Type=“Integer”>15</Value> </Eq></Where>

Page 13: Karine bosch andy-van_steenbergen-caml-spsbe12

ViewFields Clause• Restrict the number of fields returned

• No ViewFields clause

• Fields of default view are returned

<ViewFields> <FieldRef Name=“LastName” /> <FieldRef Name=“FirstName” /></ViewFields>

Page 14: Karine bosch andy-van_steenbergen-caml-spsbe12
Page 15: Karine bosch andy-van_steenbergen-caml-spsbe12

Query Options • RowLimit

• IncludeMandatoryColumns

• DatesInUtc

• ExpandUserField

• Files and folder options

Page 16: Karine bosch andy-van_steenbergen-caml-spsbe12

Query Options and the SharePoint Object Models

• Since SharePoint 2003• Server Object Model

• Lists.asmx web Service

• Since SharePoint 2010• .NET Client Object Model

• Silverlight Client Object Model

• JavaScript Client Object Model

Page 17: Karine bosch andy-van_steenbergen-caml-spsbe12

QUERY OPTIONS

Page 18: Karine bosch andy-van_steenbergen-caml-spsbe12

Query Options – Files and Folder options

• Where

• FSObjType

• 0 = Files

• 1 = Folders

• ViewAttributes• Scope

• RecursiveAll

• Recursive

• FilesOnly

• Folder

Page 19: Karine bosch andy-van_steenbergen-caml-spsbe12

QUERY OPTIONS – FILES AND FOLDERS

Page 20: Karine bosch andy-van_steenbergen-caml-spsbe12

Advanced CAML – New elements • New CAML elements

• Includes - NotIncludes

• In

<Where> <In> <FieldRef Name='Title' /> <Values> <Value Type='Text'>Test 1</Value> <Value Type='Text'>Test 2</Value> </Values> </In></Where>

<Where> <Includes> <FieldRef Name=‘City' /> <Value Type='LookupMulti'>Antwerp</Value> </Includes></Where>

Page 21: Karine bosch andy-van_steenbergen-caml-spsbe12

Advanced CAML (vNext)

• New in CAML

• Taxonomy Fields

• Calendar Lists

• DateRangesOverlap

• SiteDataQuery

Page 22: Karine bosch andy-van_steenbergen-caml-spsbe12

CAML Designer vNext

• Related Lists (caml)

• Content Type Designer

Page 23: Karine bosch andy-van_steenbergen-caml-spsbe12