عرض مشاركة واحدة
قديم 02-Aug-2011, 09:08 AM   #18
humam
مشرف منتدى المطورين
افتراضي الشفرة البرمجية للزر Delete :

الشفرة البرمجية للزر DELETE :

هذه الشفرة نوعا ما اعقد قليلا من الشفرات السابقة وتحتوي على تركيبات برمجية جديدة ومهمة في البداية سوف نشرح منطقيا كيفية القيام بعملية حذف سجل معين من جدول الخطوة الاولى في هذه العملية هي تحديد االسجل المراد حذفه حيث ان المستخدم عندما يشاهد Record معروض امامه في النافذة ويريد القيام بحذفه فان ما يلاحظه هو عملية مسح المعلومات المعروضة من النافذة بعد الحذف ولكن ما يجب ان نقوم به كمبرمجين هو حذف السجل من قاعدة البيانات وهنا سوف نحتاج الى اولا تحديد السجل الذي يجب حذفه ثم بعد ذلك نقوم بعملية تنبيه المستخدم مع اعطائه القابلية عن التراجع عن الحذف ثم نقوم بعملية الحذف ولكن هناك نقاط تفصلية اخرى تم اخذها بنظر الاعتبار وسوف نوضحها تباعا.

العبارات الثلاثة الاولى وهي Range Clear , range table ,get first تعمل مجتمعة على القيام بتحديد السجل الحالي المعروض على المستخدم في النافذة العبارة الجديدة بين هذه العبارت هي Range Table وهي تعتبر من اهم عبارت التعامل مع الجداول والاكثر استخداما وهي تعمل على ملئ Table Buffer بالسجل او السجلات المطلوبة اعتمادا على الشرط الذي يلي العبارة Where وهي تشابه تماما العبارة SELECT في SQL وفي الواقع سوف تترجم لاحقا من قبل Compiler الى عبارة SELECT عند تنفيذها بعد العبارة range table سوف يأتي اسم الجدول ثم بعد ذلك العبارة where ثم الدالة physicalname والتي تأخذ اسم الحقل (Table Field ) العائد للجدول كمحدد وتعيد Physical Name للحقل اي اسم الحقل المستخدم في جدول SQL ثم بعد ذلك نمرر قيمه الحقل والتي تأتي من Window Field المكافىء لل Table Field وهنا في هذه الحالة ان مربع النص المسمى ARBCUSTID هو ال Window Field المكافيء .ثم بعد ذلك تعمل العبارة get first على استرجاع السجل الاول في Table Buffer وفي حالتنا هذه يوجد سجل واحد فقط في Table Buffer .

المرحلة التالية هي التعرف على حالة هذا السجل لان هناك احتمالات عديدة يجب ان تأخذ بنظر الاعتبار لذا وكما قلنا انه بعد تنفيذ عبارة get first يمكن التحقق من حالة السجل على طريق فحص رسالة الخطأ التي سوف تعاد بعد تنفيذ عبارات الاسترجاع وهنا نستخدم العبارة err(table table_Name) وهي نفس العبارة المستخدمة سابقا ولكن كتبتها بصيغة اخرى وذلك لزيادة المعرفة حيث مررت Table Name كمحدد لعبارة err والتي يمكن استدعائها مباشرة مثل err() وبدون تمرير اي محدد ولكن في اي حالة يكون من الضروري تمرير المحدد ؟ هنا في حالتنا كان الامر اختياري ولكن استخدمته لتوضيح هذه النقطة وهي في حالة تنفيذك اكثر من عبارة استرجاع على جداول متعددة عند ذلك يجب ان تمرر اسم الجدول مع العبارة err() لتحدد اي جدول تريد فحص نتيجة العملية عليه واذا لم تمرر اسم الجدول واستخدمت العبارة err() سوف تقوم باعادة نتيجة العملية على اخر جدول فقط.

النقطة الجديدة الاخرى في الشفرات السابقة استخدمنا العبارة If Then لفحص حالة السجل ولكن هنا سوف نستخدم العبارة Case لاننا نريد ان نأخذ اكثر من احتمال والتركيب البرمجي للعبارة هو كما يلي :

Case Field or Expiration
In [value]
Statment1
In [value]
Statment2
Else
Stetment3
;End case

تأخذ العبارة case اسم حقل او تعبير ثم تقارن القيمة المعادة من الحقل او التعبير مع القيم الموجودة في عبارة In فأذا توافقت سوف يتم تنفيذ العبارة التي تقع بعد عبارة in مثلا اذا كان قيمة التعبير موافقة للقيمة في عبارة in الاولى سوف يتم تنفيذ العبارة Statmnet1 وهكذا واذا لم توجد قيمة موافقة للقيم المحددة في عبارت in سوف يتم تنفيذ العبارة التي تقع بعد else وهكذا ويجب ان ينتهي هذا التركيب بالعبارة end case .
الصور المصغرة للصور المرفقة
اضغط على الصورة لعرض أكبر الاســـم:	Fig10.JPG‏ المشاهدات:	490 الحجـــم:	89.6 كيلوبايت الرقم:	109  
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس