المتابعون للمدونة

الثلاثاء، 18 أبريل 2017

AcceptChangesDuringUpdate


 قبول التغييرات أثناء التحديث DataAdapter.AcceptChangesDuringUpdate:

إذا جعلت قيمة هذه الخاصية True (وهي القيمة الافتراضية)، فسيتم استدعاء الوسيلة DataRow.AcceptChanges بعد نقل التغييرات من كل صف في في مجموعة البيانات إلى قاعدة البيانات، وبهذا تعتبر مجموعة البيانات هذا الصف صفا عاديا لم يحدث به أي تغيير عن السجل الموجود في قاعدة البيانات.

أما لو جعلت قيمة هذه الخاصية False، فستظل مجموعة البيانات تعتبر هذا الصف مختلفا عن الصف الأصلي في قاعدة البيانات، وعند إجراء عملية التحديث مرة أخرى سيعاد تحديثه في قاعدة البيانات، وهو أمر غير مرغوب فيه في معظم الحالات، إلا إذا كنت تريد استخدام نفس مجموعة البيانات لتحديث أكثر من جدول.. مثلا: إذا أردت تحديث جدول المؤلفين في كل من قاعدة بيانات آكسيس وقاعدة بيانات سيكويل سيرفر، فيجب عليك فعل ما يلي:

1- وضع القيمة False في الخاصية AcceptChangesDuringUpdate لموصل بيانات آكسيس واستدعاء الوسيلة Update.

2- وضع القيمة True في الخاصية AcceptChangesDuringUpdate لموصل بيانات سيكويل سيرفر واستدعاء الوسيلة Update.. هذا سيجعل مجموعة البيانات تقبل التغييرات، وتعتبر أن كل سجلاتها مطابقة للسجلات الأصلية، فقد استخدمنا هذه التغييرات فعلا ولم نعد نحتاجها.

والمشروع UpdateAll يريك هذه الطريقة عمليا، فهو يحمل سجلات المؤلفين من قاعدة بيانات سيكويل سيرفر، ويملأ بها مجموعة البيانات، ويعرضها للمستخدم في جدول، حيث يستطيع المستخدم إجراء التغيرات التي يريدها على بيانات المؤلفين، أو يضيف أو يحذف بعض المؤلفين، وعندما يضغط زر التحديث، يتم حفظ هذه التغييرات في قاعدتي آكسيس وسيكويل سيرفر معا، وبهذا نضمن أن تظلا متزامنتين دائما.

لاحظ أننا في هذا المشروع استخدمنا المعالج السحري Wizard لإنتاج موصل البيانات وأوامره، لهذا لن تجد الكثير من الكود في المشروع.. وسنتعرف على هذا المعالج بعد قليل.. ومن المهم أن تلاحظ أن أمر التحديث UPDATE يتعرف على السجل المراد تحديثه في قاعدة البيانات من خلال مفتاحه الأساسي (الحقل ID في مثالنا هذا) وقيمه الأصلية كما شرحنا سابقا.. لهذا لو يكن جدول المؤلفين في قاعدة آكسيس يحتوي على بعض المؤلفين الموجودين في قاعدة بيانات سيكويل سيرفر فلن يحدث خطأ، لكن لن يتم تحديث هؤلاء المؤلفين لأنهم غير موجودين أصلا، ولن تتم إضافتهم أيضا.. هذه المشكلة لن تحدث لو أضفت مؤلفين جددا إلى جدول العرض، ففي هذه الحالة سيتم حفظهم في قاعدتي البيانات بشكل صحيح.. لهذا لو أردت أن تضمن أن يعمل هذا البرنامج بصورة دقيقة، فيجب أن تجعل جدولي المؤلفين في كلتا القاعدتين متماثلين منذ البداية، ليحافظ عليهما البرنامج هكذا باستمرار.

 

لمزيد من التفاصيل انظر فئة موصل البيانات DataAdapter

 

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر