أهم أقسام المدونة

الصفحات

الثلاثاء، 29 يناير 2019

DataRow Class Methods

وسائل فئة صف البيانات DataRow Class:
 
له نسخة HasVersion:
تعيد true، إذا كان السجل الحالي يمتلك نسخة البيانات الموضحة في المعامل المرسل إلي هذه الوسيلة، وهو من نوع المرقم DataRowVersion الذي تعرفنا عليه من قبل.
والمثال التالي يعرض قيمة الخانة الأولى في نسخة السجل المقترحة إن وجدت:
if (Row.HasVersion(DataRowVersion.Proposed))
    MessageBox.Show(Row[0,
                  DataRowVersion.Proposed].ToString( ));
 
تغيير الحالة إلى مضاف SetAdded:
تغير قيمة الخاصية RowState إلى Addded.. وتسبب هذه الوسيلة خطأ في البرنامج إذا كان كانت حالة السجل تشير إلى أنه معدل.. ولحل هذه المشكلة، عليك استدعاء الوسيلة AcceptChanges أولا.
 
تغيير الحالة إلى معدل SetModified:
تغير قيمة الخاصية RowState إلى Modified.. وتسبب هذه الوسيلة خطأ في البرنامج إذا كان كانت حالة السجل تشير إلى أنه معدل.. ولحل هذه المشكلة، عليك استدعاء الوسيلة AcceptChanges أولا.
 
قبول التغييرات AcceptChanges:
يؤدّي استدعاء هذه الوسيلة إلى قبول التغييرات التي حدثت على الصف الحالي منذ أن تمّ تحميله من قاعدة البيانات، أو منذ آخر مرّة تمّ فيها استدعاء الوسيلة AcceptChanges.. ليس معنى هذا أنّ هذه التغييرات سيتمّ حفظها في قاعدة البيانات، ولكن سيتمّ النظر إليها على أنها البيانات الأصليّة للسجل، ولن يمكنك التراجع عنها.. لاحظ أن هذه الوسيلة تفعل ما يلي:
-   تضع القيمة Unchanged في الخاصية RowState للسجل إذا كانت قيمتها تشير إلى أنه معدل أو مضاف.
-   تزيل السجل من الجدول نهائيا إذا كانت حالته تشير إلى أنه محذوف Deleted.
-   تنقل القيم من النسخة الحالية Current Version إلى النسخة الأصلية Original Version للسجل.
وعليك أن تستخدم هذه الوسيلة بحذر، حتى لا تضيع التغييرات التي حدث للسجل الحالي دون حفظها في الجدول الأصلي في قاعدة البيانات.
وتسبب هذه الوسيلة خطأ في البرنامج، إذا حاولت استدعائها لقبول تغييرات صف ليس مضافا إلى أي جدول!
 
رفض التغييرات RejectChanges:
يؤدّي استدعاء هذه الوسيلة إلى رفض كلّ التغييرات التي أجريت على السجل الحالي، بحيث يعود إلى الحالة التي كان عليها عند تحميله من قاعدة البيانات أو عند آخر استخدام للوسيلة AcceptChanges.. لاحظ أن هذه الوسيلة تفعل التالي:
-   تضع القيمة Unchanged في الخاصية RowState للسجل إذا كانت حالته تشير إلى أنه معدل أو محذوف.
-   تزيل السجل من الجدول نهائيا إذا كانت حالته تشير إلى أنه مضاف Added.
-   تنقل القيم من النسخة الأصلية Original Version إلى النسخة الحالية Current Version للسجل.
وتتيح لك هذه الوسيلة استعادة القيم الأصلية للسجل.. هذا مفيد في بعض الحالات، مثل التخلص من القيم التي سببت خطأ في السجل.
 
بدأ التحرير BeginEdit:
تبدأ عمليّة تحرير الصف الحالي، وتعطل أحداث الجدول التي تنطلق عند حدوث تغيرات في السجلات، كما توقف عمليّات التحقق من صحّة البيانات المدخلة في كل خانة من خانات السجل، مما يتيح للمستخدم تحرير كل خانات السجل بدون أي اعتراض.
ويتم استدعاء هذه الوسيلة تلقائيا عندما يحاول المستخدم تحرير بيانات السجل المعروض في أدوات ربط البيانات Data-bound Controls مثل مربعات النصوص وجدول عرض البيانات DataGridView.
لاحظ أن السجل يحتفظ بالبيانات التي يتم إدخالها أثناء عملية التحرير في النسخة المقترحة Proposed Version.
 
إلغاء التحرير CancelEdit:
تلغي عمليّة التحرير التي بدأت باستدعاء الوسيلة Begin Edit، وتتخلص من نسخة السجل المقترحة Proposed Version، وتحتفظ بالنسخة الحالية Current Version كما هي.. هذا معناه إلغاء التغييرات التي حدثت على السجل أثناء عملية التحرير.
 
إنهاء التحرير EndEdit:
تنهي عمليّة التحرير التي بدأت باستدعاء الوسيلة Begin Edit، وتفحص القيم التي تم إدخالها في السجل أثناء وضع التحرير، فإن كانت صحيحة تقوم بحفظ نسخة السجل المقترحة Proposed Version في النسخة الحالية Current Version.. هذا معناه حفظ التغييرات التي حدثت على السجل أثناء عملية التحرير.
ويتم استدعاء هذه الوسيلة تلقائيا عند استدعاء الوسيلة AcceptChanges.
 
معرفة خطأ العمود GetColumnError:
تعيد نصّا يصف الخطأ الذي حدث في إحدى خانات السجلّ الحالي.. وتستقبل هذه الوسيلة معاملا يوضح العمود الذي توجد فيه هذه الخانة، سواء في صورة رقم العمود أو اسمه أو كائن العمود DataColumn الذي يمثله.
 
تغيير خطأ العمود SetColumnError:
تسمح لك بوضع نصّ يصف الخطأ الذي حدث في إحدى خانات السجلّ الحالي.. ولهذه الوسيلة معاملان:
-   المعامل الأول يوضح العمود الذي توجد فيه هذه الخانة، سواء في صورة رقم العمود أو اسمه أو كائن العمود DataColumn الذي يمثله.
-       المعامل الثاني يستقبل النص الذي يشرح سبب الخطأ.
لاحظ أن هذه الوسيلة أكثر تفصيلا من الخاصية RowError، لأنها تحدد الخطأ الذي حدث في كل خانة على حدة.. وتؤدي الوسيلة SetColumnError إلى وضع القيمة true في الخاصية HasErrors، وإلى ظهور أيقونة الخطأ في جدول العرض في الخانة الناتجة من تقاطع الصف الحالي مع العمود الذي أرسلته كمعامل.. لكن هذه الوسيلة لا تؤثر على قيمة الخاصية RowError.
 
معرفة الأعمدة التي بها أخطاء GetColumnsInError:
تعيد مصفوفة أعمدة DataColumn Array تحتوي على الأعمدة التي بها أخطاء في السجلّ الحالي.
 
محو الأخطاء ClearErrors:
تمحو كلّ النصوص التي تشير إلى حدوث أخطاء في السجلّ.. هذا سيجعل الخاصية RowError والوسيلة GetColumnError تعيدان نصوصا فارغة.
 
حذف Delete:
تضع القيمة Deleted في الخاصية RowState الخاصة بالسجل الحالي.. هذا يتيح لك التراجع عن حذف هذا السجل باستدعاء الوسيلة RejectChanges أو حذفه فعلا عند استدعاء الوسيلة AcceptChanges.
لاحظ أن استخدام الوسيلة Delete مع سجل مضاف (RowState = Added) سيؤدي إلى حذف هذا السجل في الحال.
 
معرفة الصفوف التابعة GetChildRows:
تعيد مصفوفة صفوف DataRow Array بها كلّ السجلات المرتبطة بعلاقة بهذا السجلّ في جداول أخرى.. ولهذه الوسيلة الصيغ التالية:
1. الصيغة الأولى تستقبل كائن العلاقة DataRelation الذي تريد استخدامه.. هذا ضروري، لأن السجل الحالي قد يكون له سجلات فرعية في أكثر من جدول، كما هو الحال في جدول الدول Countries، الذي له سجلات فرعية في جدولي المؤلفين والناشرين.
2. الصيغة الثانية تستقبل اسم العلاقة، لتبحث عنها في مجموعة العلاقات الفرعية ChildRelations الخاصة بالجدول الذي يوجد به السجل الحالي.
3. الصيغتان الثالثة والرابعة مماثلتان للصيغتين السابقتين، ولكنهما تزيدان بمعامل ثان من نوع المرقم DataRowVersion، ليمكنك من خلاله اختيار نسخة السجلات Version التي تريد قراءتها من الجدول الفرعي.
 
تغيير الصف الرئيسي SetParentRow:
أرسل إلى هذه الوسيلة كائن السجلّ DataRow الذي تريد جعله السجل الرئيسي Master للسجل الحالي.. لاحظ أن السجل الرئيسي يمكن أن يكون في جدول آخر (الجدول الرئيسي)، أو أن يكون في الجدول الحالي (علاقة ذاتية Self Relation).
وتوجد صيغة أخرى لهذه الوسيلة، تزيد على الصيغة السابقة بمعامل ثانٍ، يستقبل كائن العلاقة DataRelation الذي يربط بين السجلين.
ويمكنك استخدام هذه الوسيلة إذا أردت تصحيح خطا في الجدول الفرعي، كأن تغير مؤلف أحد الكتب بعد نسبته خطأ إلى مؤلف آخر.. وفي هذه الحالة كل ما ستفعله هذه الوسيلة، هي وضع قيمة المفتاح الرئيسي ID للمؤلف، في خانة المفتاح الفرعي AuthorID للكتاب.
 
معرفة الصف الرئيسي GetParentRow:
تعيد السجلّ الرئيسي الذي يرتبط به السجلّ الحالي بعلاقة.. ولهذه الوسيلة عدة صيغ:
1. بعض الصيغ تستقبل معاملا واحدا، هو العلاقة التي يشترك فيها السجل الحالي، سواء في صورة اسم العلاقة، أو كائن العلاقة DataRelation.
2. بعض الصيغ تستقبل معاملا ثانيا من نوع المرقم DataRowVersion، ليمكنك من خلاله تحديد النسخة Version التي تريد قراءتها من السجل الرئيسي.
 
معرفة الصفوف الرئيسية GetParentRows:
مماثلة للوسيلة السابقة في صيغها، لكنها تعيد مصفوفة صفوف DataRow Array، تحتوي على كلّ السجلات الرئيسيّة التي تشير إلى السجلّ الحالي.. في الحقيقة لا تبدو لهذه الوسيلة أية أهمية حاليا، فهي دائنا تعيد سجلا رئيسيا واحدا، وهذا يجعل استخدام الوسيلة GetParentRow أكثر منطقية!
 
هل هي عدم IsNull:
تعيد true إذا كانت الخانة الموجودة في السجلّ الحالي والعمود المرسل كمعامل فارغة DbNull.. ولهذه الوسيلة الصيغ التالية:
1- بعض الصيغ لها معامل واحد، يستقبل اسم العمود أو رقمه أو كائن العمود DataCoulmn الذي يمثله.
2- وهناك صيغ لها معامل ثان من نوع المرقم DataRowVersion، ليمكنك من خلاله تحديد النسخة Version التي تريد فحص قيمها.
 
من كتاب من الصفر إلى الاحتراف: برمجة قواعد البيانات بتقنية ADO.NET
 
 

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

إرسال تعليق

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