안녕하세요. 김도명입니다.

이번 포스팅에서는 지난 SPQuery #1~3에 이어 SPQuery에 대해 좀 더 자세하게 알아보도록 하겠습니다.

SPQuery의 핵심이 되는 SPQuery.query에는 CAML Query란 것이 사용됩니다. XML 형식으로 데이터 쿼리문을 작성하는 방식입니다.


예를 들어 FullName 필드의 값이 '홍길동'인 것을 가져오려면 아래와 같은 형식이 됩니다.
SPQuery.Query = "<Where><Eq><FieldRef Name='FullName'/><Value Type='Text'>홍길동</Value></Eq></Where>";

이 쿼리문을 잘 작성하기 위해서는 사용되는 문법을 숙지하고 있어야 하는데 Operators(연산자)Value Type이 핵심이라고 볼 수 있습니다.

Operators(연산자)
연산자는 해당 필드의 값과 조건으로 사용되는 값을 비교할 때 사용합니다. 위 예문에서 '<Eq>'이 바로 연산자입니다.
연산자의 종류는 아래와 같습니다.

1. Eq : Equals (같다)
2. Neq : Not equal (다르다)
3. Gt : Greater than (크다)
4. Geq : Greater than or equal (크거나 같다)
5. Lt : Lower than (작다)
6. Leq : Lower than or equal (작거나 같다)
7. IsNull : Is null (Null 여부)
8. BeginsWith : Begins with (~로 시작하는)
9. Contains : Contains (~을 포함하는)

Value Type
Value Type은 조건으로 사용되는 Field의 형식을 뜻합니다. 이 Value Type을 알고 있어야 올바른 값으로 비교할 수 있습니다.
Value Type의 종류는 아래와 같습니다.

1. Text : Single line of text
2. Note : Multiple lines of text
3. Choice : Choice (menu to choose from)
4. Number : Number (1, 1.0, 100)
5. DateTime : Date and Time
6. Lookup : Lookup (information already on this site)
7. Boolean : Yes/No (check box)
8. User : Person or Group
9. Counter : ID 필드의 경우 (예 : <FieldRef Name='ID' /><Value Type='Counter'>5</Value>)


*추가로, Value Type이 DateTime인 경우 조건을 넣기가 조금 어려울 수 있습니다.
아래 Value Type이 DateTime인 필드의 비교값의 예시를 참고하세요.

1. 'EventDate'가 지금인 경우.
<Where>
 <Eq>
  <FieldRef Name='EventDate' />
  <Value Type='DateTime'><Now /></Value>
 </Eq>
</Where>

2. 'EventDate'가 오늘인 경우.
<Where>
 <Eq>
  <FieldRef Name='EventDate' />
  <Value Type='DateTime'><Today  /></Value>
 </Eq>
</Where>

3. 'EventDate'가 이번 달인 경우.
<Where>
 <Eq>
  <FieldRef Name='EventDate' />
  <Value Type='DateTime'><Month /></Value>
 </Eq>
</Where>

4. 'EventDate'가 특정 DateTime인 경우.
<Where>
 <Eq>
  <FieldRef Name='EventDate' />
  <Value Type='DateTime'>" + SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime) + "</Value>
 </Eq>
</Where>

또한 Value Type이 DateTime인 경우 IncludeTimeValue='True' 속성을 추가할 수 있습니다.
예 : <Value Type='DateTime' IncludeTimeValue='True'></Value>

감사합니다.
신고
Posted by kdmsong

BLOG main image
http://SharePointSchool.net by kdmsong

분류 전체보기 (262)
SharePoint 2013 (1)
SharePoint 2010 (224)
MOSS 2007 (3)
SharePoint 세미나 (9)
Windows Azure (7)
IIS 6.0 ~ 8.0 (8)
개발자 기본 소양 (10)
Etc. (0)
Total : 386,056
Today : 9 Yesterday : 322
Statistics Graph

free counters