ثابر إلى الأمام يا عصفور يادكتور المستقبل, هذه وغيرها من العبارات التي تتحفنا بها الكثير من المدرسات وذلك لتشجيع الطفل الصغير للعمل بجد أكبر ليصير دكتوراً يعاين الفقراء بالمجان ( يا عيني عليهم شقدهم طيبين ... ) ومنهم من يظن أنه عصفور فيذهب ويلقي بنفسه من مكان مرتفع ليقع ويصيح بكاء وعويلاً ....
المهم هدفي من هذه المقدمة هو أننا ومن صغرنا تُزرع فينا بشكل مباشر وغير مباشر أفكار وكلمات تحدد مستقبلنا وطريقة تفكيرنا فيما سنصبح عندما نكبر وكيف سننتسب إلى نقابة الأطباء أو كيف سنشيد الأبنية العالية بعد التخرج من الهندسة المدنية أو كيف سنعد أسنان المريض ونشتم روائح غريبة وعجيبة بعد أن نتخرج من كلية طب الأسنان, وللأسف لا أحد يفكر فيما نريده نحن أو ماهي هواياتنا أو ماذا نتقن أو حتى ماذا يحتاج الوطن من مهن انقرضت من مجتمعاتنا, فالأم تريد أن تتباهى بابنها أمام الجارات والأب يريد تحقيق ذاته عن طريق ابنه بعد أن فشل في أن يكون ما أراد أن يكونه وهو صغير...
نتائج الثانوية العامة وكما كل سنة تحدث ضجة كبيرة فمنهم من يبكي فرحاً ومنهم من يبكي حزناً وآخر يبكي لأن أباه سيخجل أمام أصدقائه أو أمه ستحرج أمام جاراتها, فهو لم يحصل العلامات التي تدخله كلية الطب أو الصيدلة أو أضعف الإيمان كلية هندسة ما, المهم أن يتباها الأب وتزهو الأم أما ذلك المسكين "الطالب(ة)" فلا حول له ولاقوة إلا من رحم ربك واستطاع أن ينجو من فخ العادات والأفكار القديمة التي تعتبر أن من لايدخل كلية الطب فهو فاشل أو أن من يدرس في كلية الاقتصاد ليس إلا محاسب بسيط بقميص له كمين مميزين للحماية من الأحبار والأوراق, أما الذي يدرس في كلية الزراعة فهو فلاح مثقف ... والكثير غيرها من الأفكار الغريبة التي تضحك وتبكي بنفس الوقت.
أحمد كانت نتيجته فوق الـ 230 علامة ما عدا مادة التربية الدينية, فيقفز أهله فرحاً ويحيون الليالي الملاح وهنا تكون المهمة انتهت لأن ابنهم أصبح طبيبا سيشارك في تضميد جراح أجساد الإخوة في فلسطين ولبنان والعراق وربما جراح عقول بعض العرب التي بدأت تتعرض لجنون الغباء أو مهندساً سيعيد بناء الجولان وجنوب لبنان وغزة ونابلس وجنين ونسوا أنه مازال أمامه الكثير والكثير ليتعلمه ورحلة التعب قد بدأت للتو.
أما حسان فحصّل أقل من 200 علامة ( شو كان عم بساوي طول السنة ( فلقد ارتكب خطأ سيكلفه عدة أسابيع من العبوس والتشاؤم والحرج وغيرها من التفاصيل الأخرى التي لاشك ترونها كل يوم من خلال أصدقائكم أو أهاليكم أو جيرانكم, أما حسان فهو يريد أن يدخل كلية الآداب لدراسة التاريخ ويتخصص في التاريخ العربي والصراعات التي خاضتها أمتنا مع الطامعين والمحتلين على مدى العصور والقرون, فتهب بوجهه أمم الأرض كلها لتقول: تاريخ!!!!!! وماذا ستعمل بعد أن تنتهي من الدراسة, معلم؟؟؟!!!!! من أين ستأكل؟ وكيف ستعيش؟ هل ستبيع تاريخك لأعدائك وتذل نفسك أم ستحفر الأرض بحثاً عن جثث ضحايا مجزرة كفر قاسم ودير ياسين, أم ستحكي قصة صبرا وشاتيلا وذلك المسخ الذي ارتكبها.
أعلم أن آباءنا يريدون الأفضل لنا دائماً, لكن هل الأفضل أن يكون كل الشعب أطباء أو مهندسين, من سيعلمنا تاريخنا المجيد وطرد بني النضير وبني القينقاع وبني قريظة وفتح حصن خيبر وحرب تشرين التحريرية وذكرى تحرير الجنوب, من يصنع المعاول التي تزرع الأرض لتطعم تلك البطون الجائعة التي تهرب من قنابل محرمة دولياً. ومن سيبني بيوتاً خربتها أيادي المغول, ومن ومن ومن ؟؟؟؟
أهالينا الكرام رفقاً بأخوتنا الطلبة وانظروا نظرة متفائلة إلى أي فرع من فروع العلم أو العمل التي يختارها أخي وأختي وساعدوهم لينجحوا فيها وامنحوهم الثقة لأن الوقت فات وما فات قد مات وما هو آت آت.
الأحد، 31 مايو 2009
نتائج الثانوية وصراعنا مع المغول ... بقلم : م. إسماعيل عنجريني
الجمعة، 17 أبريل 2009
الترجمة العربية لملفات المساعدة لمكتبة jQuery
الخميس، 2 أبريل 2009
مشكلة الفاصل في قائمة ASP.NET MENU
طبعاً بحثت عن أسهل حل وأقله تكلفة على الأداء (قد يكون هناك حل آخر أفضل وأسهل من الحل المطروح), وهذا الحل يتضمن استخدام شيفرة JavaScript وذلك كما يلي:
$('img [src $= "YOUR_SEPARATOR_IMAGE_NAME"]:last').hide()
- YOUR_SEPARATOR_IMAGE_NAME: اسم الصورة التي تمثل صورة الفاصل بين عناصر القائمة.
الخميس، 26 مارس 2009
المرجع العربي لمكتبة jQuery
السبت، 21 مارس 2009
بناء معرض للصور باستخدام SharePoint Designer و Image Library و jQuery
1 - بعد تسجيل الدخول باستخدام اسم مستخدم وكلمة مرور اضغط على إجراءات الموقع – ومن ثم عرض كامل محتويات الموقع وبعدها اضغط على زر إنشاء واختر مكتبة صور Image Library كما في الشكل التالي:
2 - طبعاً من الأفضل إدخال اسم المكتبة باللغة الانجليزية وذلك لكي يظهر اسمها بشكل مناسب في عنوان المتصفح بشكل أفضل عند تصفح محتوياتها وتستطيع تغيير اسمها بعد ذلك إلى اللغة العربية:
3 - بعد إنشاء مكتبة الصور يجب حمل بعض الصور إليها ويفضل أن تكون من النوع jpg أو gif, ومن ثم افتح برنامج SharePoint Designer وافتح الموقع حيث ستضع الصفحة التي تحتوي على معرض الصور.
4 - أنشئ صفحة aspx التي ستحتوي على معرض الصور وليكن اسمها MyPhotoGallery.aspx واحفظها في المجلد Pages.
5 - حول الصفحة إلى وضعية التصميم بالضغط على Design في أسفل الصفحة كما في الشكل التالي:
6 - يجب تخصيص الجزء PlaceHolderMain من الصفحة وذلك حيث سيتم إدراج Data View التي ستعرض صور مصغرة عن الصور التي تم رفعها إلى مكتبة الصور PhotoGallery:
7 - من قائمة Data View اختر Manage Data Sources ومن ثم اختر اضغط على PhotoGallery من القسم SharePoint Libraries واختر Show Data ومن ثم اضغط على مسار URL واسحب إلى الصفحة كما في الشكل التالي:
8 - ابحث عن تعليمة الـ HTML التي تعرض الصورة وغير ها إلى القيمة التالي:
الآن افتح الصفحة MyPhotoGallery.aspx لتشاهد صور مصغرة عن الصور التي تم رفعها إلى مكتبة الصور كما في الشكل التالي:
9 - 1. في هذه الخطوة سيتم إضافة ميزة إظهار الصورة الأصلية بحجمها الحقيقي عندما يتم وضع مؤشر الفأرة على الصورة المصغرة, وذلك باستخدام مكتبة jQuery والتي يمكن الحصول عليها من الرابط التالي:http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js
الآن عند مرو مؤشر الفأرة فوق الصورة ستظهر الصورة صغيرة وبعدها سوف تكبر بالتدريج (شكراً jQuery).
الجمعة، 13 مارس 2009
تخصيص صفحة 404 في الـ SharePoint
webapp.FileNotFoundPage = "MySPS404.html";webapp.Update();
حيث تستطيع تنفيذ هذه العملية على مستوى تطبيق الويب Web Application أي لكل Web Application صفحة خاصة بالخطأ 404.
الخميس، 12 مارس 2009
تركيا أردوغان أم مسلسلات الغباء Ardogan-Turkie
لا شك بأن معظمنا سمع عن الدولة العثمانية (أو ما يسمى وللأسف بالاحتلال العثماني) حيث بقيت هذه الدولة 400 سنة تقريباً ضمن الوطن العربي حتى عام 1916 عندما اشتعلت الحرب العالمية الأولى وكان أحد الأطراف الرئيسيين هو الدولة العثمانية وألمانيا من جهة وبريطانيا وفرنسا من جهة أخرى كأطراف رئيسية في هذه الحرب وقد اشتركت بالطبع دول أخرى في هذه الحرب, ولا أريد في مقالاتي هذه أن أسرد تاريخ تركيا بعد وقبل الحرب العالمية الأولى ولكن مايهمني هو تركيا الآن والتي أنظر إليها من وجهة نظر الحزب الحاكم فيها المتمثل بأردوغان وغول والمواقف المشرفة التي وقفتها تركيا وخاصة أردوغان ومن ورائه جميع مؤيديه ضد الحرب الأخيرة على غزة حيث صرخ أردوغان صرخة غضب في وجه رئيس إسرائيل في مؤتمر دافوس وعلمنا كيف ومتى يجب أن نتخذ القرارات الصحيحة ويكفي وجهه الذي اصطبغ بحمرة الغضب لأهالي وأطفال غزة عندما بدأ رئيس إسرائيل يبرر مافعله جيشه في غزة وطبعاً جميعنا رأينا كيف خرج من المؤتمر على مرأى الجميع ورفض متابعة المؤتمر بينما وللأسف بقي آخرون هم أحق بالخروج نصرة لأهالي غزة وفلسطين عموماً. طبعاً لما وصل أردوغان إلى تركيا استقبل من قبل الأتراك بالهتاف والتأييد وهذا يدل على أن موقف أردوغان كان يعكس موقف الشارع التركي وشعب تركيا بأغلبيته الساحقة, وهذا إن دل فإنما يدل على شعب يغضب لقتل الأبرياء من أهالي غزة وليس شعباً شغله الشاغل هو الحب والقتل ومطاردة النساء والمخدرات والعصابات والمافيا كما صورته المسلسلات التركية المدبلجة والتي أغرقت جميع المحطات العربية بأسفل مارأيته بحياتي من مسلسلات فكرتها الأساسية مبنية على القتل وعشق النساء والمخدرات وكأن الرجل التركي إما قاتل وإما عاشق, وإما قاتل وعاشق بنفس الوقت.
مادفعني لكتابة هذه السطور هو أن معظم من أعرفهن وهنا أركز على النساء لأنهن الأكثر مشاهدة لهذه السخافات وبعض الرجال أيضاً باتوا يعتقدون اعتقاداً جازماً بأن تركيا والشعب التركي لا عمل له إلا القتل وبأنهم مجموعة من السكارى والعاهرات والقوادين وصار هذا الحديث يدور على ألسنة الجهلة والمتخلفين ناسين أو متناسين تركيا الحديثة التي تنافس أقوى الدول الأوروبية اقتصادياً وحتى عسكرياً بل وتعتبر من الدول السياحية الأولى في العالم, وتناسوا أيضاً الصناعات المتعددة التي تشتهر بها تركيا والتي لا شك أن الشعب السوري وخاصة أصحاب المصانع والمعامل والتجار يعرفونها أيضاً ألا وهي صناعات الماكينات الحديثة لمختلف القطاعات الصناعية وخاصة النسيج والطباعة وغيرها. ألم تلاحظوا أن شيئاً من هذا لم يتم التطرق إليه في أي مسلسل من تلك المسلسلات وكأنهم يأكلون العشق صباحاً ويشربون الخمر ظهراً ويعشقون النساء مساء.
لا أعرف كيف استطاعت تلك المسلسلات تصوير القاتل والمجرم وتاجر المخدرات بأنه بطل وطني ولا أعرف أيضاً كيف استطاعت سلخ المجتمع التركي عن إسلامه بأن صورته على أنه مجرد مجموعة من الشباب والشابات الذين يعيشون بالأسلوب الغربي فلا فرق عندهم بين الزواج وغير الزواج. بل ذهبت الفضائيات العربية إلى أبعد من ذلك بأن جعلت مجموعة من المخنثين أبطالاً وضيوف شرف على شاشاتها ومادة إعلانية دسمة تدر عليها الملايين وذلك بالتلاعب على وتر لطالما حيرتني أساليبه وأفكاره ألا وهو صناعة نجم وبطل من لاشيء وتهافت الشباب العربي المسكين على أولئك طمعاً بلمسة أو قبلة أو حتى صورة.
أقول ويحزنني ما أرى وأسمع وأشاهد على فضائياتنا بأن مايعرض في هذه المسلسلات وإن لم يكن مقصوداً (وأشك بهذا) فإنما هو من أسفل ماقد يعكس صورة أي دولة ويجب على كل شخص أن يتحرى حقيقة تركيا وألا يحكم عليها من خلال تلك المسلسلات وإلا فإنه ظلم تركيا وظلم نفسه حين ظن بأن دولة مثل تركيا هي مايعرض على التلفاز فقط. وأناشد وزراء الإعلام العرب وخاصة وزير الإعلام السوري أن ينهي هذه المهذلة وأن توضع قوانين تجبر الشركات على مستوى معين يجب أن تتمتع بها المسلسلات لأنها وإن لم يقتنع البعض تبث سموماً وأفكاراً لا شك بأنها تسيطر على عقل الشباب العربي وإن أنكر ذلك وادعى بأنها مجرد تسلية وأنه ينساها بمجرد انتهاء المسلسل, وهذا غير صحيح بشهادة علماء النفس وعلماء الاجتماع وغيرهم من المختصين في مجال الإعلام المسموع والمرئي والذين أكدوا بأن مانشاهده إنما يحدد طريقة تفكيرنا وسلوكياتنا على المدى الطويل.
دعوة إلى كل مشاهد وقارئ بأن يبحث عما يفيده في الفضائيات وبألا يكون ذلك المشاهد السلبي الذي يشاهد مجموعة من الصور التي تتحرك ويلاحق هذا الممثل أو تلك بنظرات الغباء والاستسلام وكأن عقولنا لم تعد تفكر أو تعقل, ودعوة إلى كل رب أسرة بأن يحرص على منع أولاده وخاصة الصغار منهم من مشاهدة تلك السخافات التي تصور القاتل بطلاً والعاهرة بأنها تلك الحنون المسكينة, وإلا فلا يسألنّ عما سيفعله ابنه أو ابنته بعد ذلك بل وأقول ماقد تفعله زوجته أو حتى ماقد يفعله هو متاثراً بالأفكار الخفية التي تُبث من خلال وسائل الإعلام.
المهندس. إسماعيل عنجريني
الخميس، 5 مارس 2009
نظرة على لغة الاستعلام CAML Overview - 3
- نظرة على لغة الاستعلام CAML Overview - 1
- نظرة على لغة الاستعلام CAML Overview - 2
- نظرة على لغة الاستعلام CAML Overview - 3
تشكل عبارات عمليات المقارنة الجزء الأكبر من عبارات لغة الاستعلام CAML Query والجزء التالي سيركز على شرح كافة هذه العبارات:
تستخدم هذه العبارة للبحث عن قيمة نصية في بداية قيمة حقل نصي ويتم استخدام هذه العبارة ضمن عبارة Where مباشرة أو ضمن عبارة And أو عبارة Or:
<Query>
<Where>
<BeginWith>
<FieldRef Name="Title" />
<Value Type="Text">Person</Value>
</BeginWith>
</Where>
</Query>
العبارة السابقة تبحث عن كل العناصر التي يبدأ حقل العنوان Title بـ Person, ويتم استخدام العبارة BeginWith بنفس الطريقة في حال استخدام العبارة And أو العبارة Or.
تتشابه عبارة Contains مع عبارة BeginsWith في أنها تطبق على الحقول النصية والاختلاف هو أنها تبحث عن سلسلة نصية في جزء من أجزاء قيمة الحقل النصي أي ليس من الضروري أن تظهر السلسلة النصية في بداية قيمة الحقل, ويتم استخدام هذه العبارة ضمن عبارة Where مباشرة أو ضمن عبارة And أو عبارة Or:
<Query>
<Where>
<And>
<BeginsWith>
<FieldRef Name="Title" />
<Value Type="Text">Person</Value>
</BeginsWith>
<Contains>
<FieldRef Name="Description" />
<Value Type="Note">Ahmed</Value>
</Contains
</And>
</Where>
</Query>
المثال السابق يدمج بين العبارتين BeginsWith و Contains ضمن عبارة And, وبنفس الطريقة يمكن استخدام العبارة Contains مع عبارة Or أو حتى بشكل مباشر ضمن عبارة Where.
العبارة Eq هي اختصار للكلمة Equal وتستخدم للتأكد من أن قيمة حقل ما تساوي قيمة محددة سواء نصية أو رقمية أو حتى تاريخ ووقت أو أي قيمة أخرى. ويمكين استخدامها ضمن العبارة And أو العبارة Or أو مباشرة ضمن العبارة Where:
<Query>
<Where>
<Eq>
<FieldRef Name="Status" />
<Value Type="Text">Completed</Value>
</Eq>
</Where>
</Query>
طبعاً المثال السابق من السهل قراءته والذي يشتطر أن تكون قيمة الحقل Status تساوي القيمة Completed ليظهر عنصر القائمة في نتائج الاستعلام.
عبارة Neq هي اختصار لـ Not Equal والتي تفيد في التأكد من قيمة حقل ما لا تساوي قيمة معينة, نصية أو رمقية أو حتى تاريخ ووقت أو أي قيمة أخرى وهي بعكس العبارة Eq, وطريقة استخدامها مشابهة تماماً للعبارة Eq حيث يمكن استخدامها ضمن العبارة And أو العبارة Or أو مباشرة ضمن عبارة Where.
<Query>
<Where>
<Neq>
<FieldRef Name="Status" />
<Value Type="Text">Completed</Value>
</Neq>
</Where>
</Query>
عبارة Gt
عبارة Gt هي اختصار لـ Greater Than (أكبر تماماً من) وهي معامل رياضي تستخدم لمقارنة قيمة حقل ما مع قيمة من النوع الرقمي أو تاريخ أو وقت وطبعاً يمكن استخدام العبارة Gt ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:
<Query>
<Where>
<Gt>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Gt>
</Where>
</Query>
المثال السابق يقارن قيمة الحقل DeadLine وهو من النوع DateTime مع تاريخ اليوم الذي عُبر عنه باستخدام قيمة معرفة سابقاً ضمن لغة الاستعلام CAML وهذه القيمة هي
عبارة Geq هي اختصار لـ Greater Than or Equal (أكبر أو يساوي) وهذه العبارة مشابهة تماماً للعبارة Gt في كيفية استخدامها, حيث يمكن استخدام العبارة Geq ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:
<Query>
<Where>
<Geq>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Geq>
</Where>
</Query>
عبارة Lt
عبارة Lt هي اختصار لـ Less Than (أصغر تماماً من) وهي معامل رياضي تستخدم لمقارنة قيمة حقل ما مع قيمة من النوع الرقمي أو تاريخ أو وقت وطبعاً يمكن استخدام العبارة Lt ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:
<Query>
<Where>
<Lt>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Lt>
</Where>
</Query>
المثال السابق يقارن قيمة الحقل DeadLine وهو من النوع DateTime مع تاريخ اليوم الذي عُبر عنه باستخدام قيمة معرفة سابقاً ضمن لغة الاستعلام CAML وهذه القيمة هي
عبارة Leq
عبارة Leq هي اختصار لـ Less Than or Equal (أصغر أو يساوي) وهذه العبارة مشابهة تماماً للعبارة Lt في كيفية استخدامها, حيث يمكن استخدام العبارة Leq ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:
<Query>
<Where>
<Leq>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Leq>
</Where>
</Query>
عبارة IsNotNull
تستخدم عبارة IsNotNull لاستخراج العناصر التي يكون فيها الحقل المستهدف لا يحتوي على قيمة خالية, ويمكن استخدام عبارة IsNotNull ضمن عبارة And أو عبارة Or أو مباشرة ضمن عبارة Where:
<Query>
<Where>
<IsNotNull>
<FieldRef Name="DeadLine" />
</IsNotNull >
</Where>
</Query>
ونلاحظ أن العبارة IsNotNull لا تتطلب وجود العبارة Value بعد العبارة FieldRef.
عبارة IsNull
تستخدم عبارة IsNull لاستخراج العناصر التي يكون فيها الحقل المستهدف يحتوي على قيمة خالية, ويمكن استخدام عبارة IsNull ضمن عبارة And أو عبارة Or أو مباشرة ضمن عبارة Where:
<Query>
<Where>
<IsNull>
<FieldRef Name="DeadLine" />
</IsNull >
</Where>
</Query>
ونلاحظ أن العبارة IsNull لا تتطلب وجود العبارة Value بعد العبارة FieldRef.
الأربعاء، 4 مارس 2009
نظرة على لغة الاستعلام CAML Overview - 2
- نظرة على لغة الاستعلام CAML Overview - 1
- نظرة على لغة الاستعلام CAML Overview - 2
- نظرة على لغة الاستعلام CAML Overview - 3
TRUE | OR | TRUE | TRUE |
TRUE | OR | FALSE | TRUE |
FALSE | OR | TRUE | TRUE |
FALSE | OR | FALSE | FALSE |
من الجدول السابق نستنتج أنه يكفي أن تكون إحدى العبارتين صحيحة لتكون نتيجة العبارة Or تساوي TRUE. وتستخدم العبارة Or ضمن لغة الاستعلام CAML كما يلي:
وضمن عبارة 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 ضمن عبارة Or أو عبارة Where مباشرة وطبعاً من المعروف أن عبارة And المنطقية تعمل بالطريقة التالية:
TRUE | OR | TRUE | TRUE |
TRUE | OR | FALSE | FALSE |
FALSE | OR | TRUE | FALSE |
FALSE | OR | FALSE | FALSE |
من الجدول السابق نستنتج أنه يجب أن تكون العبارتين صحيحتين لتكون نتيجة العبارة And تساوي TRUE. وتستخدم العبارة And ضمن لغة الاستعلام CAML كما يلي:
وضمن عبارة 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 أخرى.
السبت، 28 فبراير 2009
نظرة على لغة الاستعلام CAML Overview - 1
- نظرة على لغة الاستعلام CAML Overview - 1
- نظرة على لغة الاستعلام CAML Overview - 2
- نظرة على لغة الاستعلام CAML Overview - 3
تستخدم هذه اللغة في Windows SharePoint Services (WSS) وذلك لأغراض متعددة ومختلفة, منها تعريف الحقول Fields والمناظير Views ضمن المواقع والقوائم في الـ SharePoint بشكل عام وسنبدأ إن شاء الله بكيفية استخدام الـ CAML في عملية استخراج البيانات من القوائم أو مايسمى بـ CAML Query.
هيكلية لغة الاستعلام CAML Query
جميع الصيغ التي تهدف إلى استخراج البيانات من أي قائمة لها الشكل التالي:
<query>
<where>
...
</where>
<groupby>
...
</groupby>
<orderby>
...
</orderby>
</query>
Query
حيث يعتبر العنصر Query أول عناصر هذه الصيغة وجميع العناصر الأخرى تنحصر بين
- Where
- OrderBy
- GroupBy
ملاحظة: لا يجب استخدام هذا العنصر في حال استخدام الصف SPQuery عند كتابة شيفرة بلغة C# أو VB.NET لاستخراج البيانات من القوائم بالاعتماد على لغة الاستعلام CAML.
Where
يدل اسم هذا العنصر على وظيفته حيث يعبر عن وجود شرط يجب أن تحققه العناصر التي سيتم استخراجها من القائمة التي تنفذ عليها عملية الاستعلام, وضمنها يمكن استخدام العناصر التالية فقط:
- And
- BeginsWith
- Contains
- DateRangesOverlap
- Eq
- Geq
- Gt
- IsNotNull
- IsNull
- Leq
- Lt
- Membership
- Neq
- Or
وطبعاً يمكن الدمج بين العناصر السابقة لتوفير مجموعة من الشروط والفصل بينها باستخدام And أو Or, وإجراء عمليات حسابية بسيطة ويمكن استخدام ثوابت معرفة سابقاً في لغة الاستعلام CAML.
OrderBy
وظيفة هذا العنصر هو ترتيب نتائج الاستعلام وفقاً لحقل Field أو أكثر من حقول القائمة التي يُنفذ الاستعلام عليها, وصيغة هذا العنصر هي:
<OrderBy>
<FieldRef
Ascending = "TRUE" "FALSE"
Name = "Text" />
...
</OrderBy>
حيث استخدم العنصر FieldRef لتعريف اسم الحقل الذي سيتم ترتيب النتائج وفقاً له, وذلك بتحديد الخاصتين التاليتين:
- Ascending: وتقبل إحدى القيمتين TRUE أو FALSE فول كانت القيمة هي TRUE فسيتم ترتيب نتائج الاستعلام بشكل تصاعدي وفقاً للحقل الحالي (وهي القيمة الافتراضية) أما لو كانت القيمة هي FALSE فسيتم ترتيب نتائج الاستعلام بشكل تنازلي وفقاً للحقل الحالي.
- Name: اسم الحقل الذي سيتم الترتيب وفقاً له, وهنا يجب كتابة اسم الحقل بشكل صحيح مع الانتباه إلى أن اسم الحقل غالباً هو ليس نفسه الاسم الظاهر فهو يختلف باختلاف طريقة تسمية الحقل عند إنشاء أعمدة القائمة.
GroupBy
يُستخدم هذا العنصر بهدف تجميع النتائج حسب أحد حقول القائمة, ولها الصيغة التالية:
<GroupBy
Collapse = "TRUE" "FALSE">
<FieldRef Name = "Field_Name"/>
</GroupBy>
وهذا العنصر لها خاصية اسمها Collapse وتأخذ إما القيمة TRUE عندها سيتم طي البيانات ضمن مجموعات أما FALSE فسيتم توسيع كل المجموعات وإظهار البيانات, أما العنصر FieldRef فيستخدم فقط الخاصية التالية:
- Name: اسم الحقل الذي سيتم التجميع وفقاً له, وهنا يجب كتابة اسم الحقل بشكل صحيح مع الانتباه إلى أن اسم الحقل غالباً هو ليس نفسه الاسم الظاهر فهو يختلف باختلاف طريقة تسمية الحقل عند إنشاء أعمدة القائمة.