الأربعاء، 4 مارس 2009

نظرة على لغة الاستعلام CAML Overview - 2


ضمن لغة الاستعلام CAML يمكن استخدام تعليمتين منطقيتين فقط وهما And و Or وذلك ضمن عبارة Where مباشرة ولا يمكن استخدامهما إلا ضمن عبارة Where أو إحداهما ضمن الأخرى, وما يلي شرح لطريقة الاستخدام لـ Or و And:
تستخدم عبارة Or ضمن عبارة And أو عبارة Where مباشرة وطبعاً من المعروف أن عبارة Or المنطقية تعمل بالطريقة التالية:

TRUEORTRUETRUE
TRUEORFALSETRUE
FALSEORTRUETRUE
FALSEORFALSEFALSE



من الجدول السابق نستنتج أنه يكفي أن تكون إحدى العبارتين صحيحة لتكون نتيجة العبارة Or تساوي TRUE. وتستخدم العبارة Or ضمن لغة الاستعلام CAML كما يلي:

<or>...</or>



وضمن عبارة Or يمكن استخدام البعارات التالية فقط:

  • And
  • BeginsWith
  • Contains
  • DateRangesOverlap
  • Eq
  • Geq
  • Gt
  • IsNotNull
  • IsNull
  • Leq
  • Lt
  • Membership
  • Neq

يمكن استخدام أي تتابع من العبارات السابقة ضمن عبارة Or مع الانتباه إلى أنه يجب استخدام عبارتين ضمن كل عبارة Or, كما في المثال التالي:



<Query>
<Where>
<Or>
<Eq>
<FieldRef Name="DisplayAtMain" />
<Value Type="Boolean">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">تجربة</Value>
</Eq>
</Or>
</Where>
</Query>


في المثال السابق تظهر النتائج عندما تكون قيمة الحقل DisplayAtMain = 1 (TRUE) أو قيمة الحقل النصي Title تساوي "تجربة".
أما في حال استخدام العبارة Or من أجل أكثر من عبارتين فيجب تضمين عبارة Or داخل عبارة Or خارجية وذلك كما في المثال التالي:


<query>
<Where>
<Or>
<And>
<Eq>
<FieldRef Name="DisplayAtMain" />
<Value Type="Boolean">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">تجربة</Value>
</Eq>
</And>
<Gt>
<FieldRef Name="ID" />
<Value Type="Number">10</Value>
</Gt>
</Or>
</Where>
</query>


في المثال السابق تظهر نتائج عندما يتحقق أحد الشرطين فإما (تكون قيمة الحقل DisplayAtMain = 1 (TRUE) و قيمة الحقل النصي Title تساوي "تجربة") أو (قيمة الحقل ID أكبر تماماً من القيمة 10). وهنا نلاحظ كيف تمت كتابة الشرطين الأولين ضمن عبارة And وعبارة And نفسها تم تضمينها ضمن عبارة Or.

عبارة And

تستخدم عبارة And ضمن عبارة Or أو عبارة Where مباشرة وطبعاً من المعروف أن عبارة And المنطقية تعمل بالطريقة التالية:


TRUEORTRUETRUE
TRUEORFALSEFALSE
FALSEORTRUEFALSE
FALSEORFALSEFALSE


من الجدول السابق نستنتج أنه يجب أن تكون العبارتين صحيحتين لتكون نتيجة العبارة And تساوي TRUE. وتستخدم العبارة And ضمن لغة الاستعلام CAML كما يلي:

<And> … </And>



وضمن عبارة And يمكن استخدام البعارات التالية فقط:

  • Or
  • BeginsWith
  • Contains
  • DateRangesOverlap
  • Eq
  • Geq
  • Gt
  • IsNotNull
  • IsNull
  • Leq
  • Lt
  • Membership
  • Neq

يمكن استخدام أي تتابع من العبارات السابقة ضمن عبارة And مع الانتباه إلى أنه يجب استخدام عبارتين ضمن كل عبارة And, كما في المثال التالي:




<Query>
<Where>
<And>
<Eq>
<FieldRef Name="DisplayAtMain" />
<Value Type="Boolean">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">تجربة</Value>
</Eq>
</And>
</Where>
</Query>


في المثال السابق تظهر النتائج عندما تكون قيمة الحقل DisplayAtMain = 1 (TRUE) و قيمة الحقل النصي Title تساوي "تجربة".
أما في حال استخدام العبارة And من أجل أكثر من عبارتين فيجب تضمين عبارة And داخل عبارة And خارجية وذلك كما في المثال التالي:


<Query>
<Where>
<And>
<And>
<Eq>
<FieldRef Name="DisplayAtMain" />
<Value Type="Boolean">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">تجربة</Value>
</Eq>
</And>
<Gt>
<FieldRef Name="ID" />
<Value Type="Number">10</Value>
</Gt>
</And>
</Where>
</Query>


في المثال السابق تظهر نتائج عندما يتحقق أحد الشرطين فإما (تكون قيمة الحقل DisplayAtMain = 1 (TRUE) و قيمة الحقل النصي Title تساوي "تجربة") و (قيمة الحقل ID أكبر تماماً من القيمة 10). وهنا نلاحظ كيف تمت كتابة الشرطين الأولين ضمن عبارة And وعبارة And نفسها تم تضمينها ضمن عبارة And أخرى.

هناك تعليق واحد:

  1. يعطيك العافية.. على الشرح الوافي

    ردحذف