الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه إسماعيل عنجريني في 18 يناير 2010 · 0 رد · 1,251 مشاهدة · في Microsoft SharePoint
مشاركة: واتساب X فيسبوك تيليجرام
#1

العمليات المنطقية في لغة الاستعلام CAML

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

عبارة Or

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

TRUE	OR	TRUE	TRUE
TRUE	OR	FALSE	TRUE
FALSE	OR	TRUE	TRUE
FALSE	OR	FALSE	FALSE

من الجدول السابق نستنتج أنه يكفي أن تكون إحدى العبارتين صحيحة لتكون نتيجة العبارة 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 المنطقية تعمل بالطريقة التالية:

TRUE	OR	TRUE	TRUE
TRUE	OR	FALSE	FALSE
FALSE	OR	TRUE	FALSE
FALSE	OR	FALSE	FALSE

من الجدول السابق نستنتج أنه يجب أن تكون العبارتين صحيحتين لتكون نتيجة العبارة 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 أخرى.

رابط المقالة الأصل

تم تعديل هذه المشاركة بواسطة إسماعيل عنجريني في 18 يناير 2010 في 21:33

مواضيع مشابهة