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

الأحد، 11 فبراير 2018

DataTableCollection Class

فئة مجموعة الجداول DataTableCollection Class
 
تحتوي هذه المجموعة على عناصر من نوع الفئة DataTable.. ويمكن الحصول على هذه المجموعة باستخدام الخاصيّة DataSet.Tables.
والكود التالي يعرض كلّ أسماء الجداول الموجودة في مجموعة البيانات Ds:
For Each Tbl As DataTable In Ds.Tables
MsgBox(tbl.TableName)
Next
ولا تمتلك هذه المجموعة أي خصائص ووسائل جديدة غير ما تمثله من عناصر واجهة المجموعة ICollection، ولكنها تضيف بعض الصيغ إلى بعض هذه العناصر، مثل:
 

* العنصر Item:
هذه هي الخاصية الافتراضية، وهي تعيد كائن البيانات DataTable الموجود في موضع معين في القائمة.. ولهذه الخاصية ثلاث صيغ:
- الصيغة الأولى تستقبل رقم الجدول في المجموعة.
- والصيغة الثانية تستقبل نصا يمثل اسم الجدل.
- والصيغة الثالثة تزيد على الصيغة السابقة بمعامل ثان، يستقبل نصا يمثل اسم النطاق Name Space الذي يوجد تحته الجدول في مجموعة البيانات.
وتعيد هذه الوسيلة Nothing إذا لم تجد الجدول المطلوب في المجموعة.
 
 إضافة Add:
تضيف جدولا إلى مجموعة البيانات، ولها أربع صيغ:
- الصيغة الأولى بدون معاملات، وهي تنشئ جدولا باسم افتراضيّ (Table1 أو Table2 وهكذا...) وتضيفه إلى مجموعة البيانات.
- الصيغة الثانية تستقبل معاملا نصّيّا، هو اسم الجدول الذي سيتمّ إنشاؤه وإضافته إلى المجموعة.. ولو أرسلت إلى هذا المعامل نصا فارغا ""، فسيسمى الجدول بالاسم الافتراضي Table1 أو Table2 وهكذا... لاحظ أن إضافة جدول بنفس اسم جدول موجود سابقا سيؤدي إلى حدوث خطأ.
- الصيغة الثالثة تزيد على الصيغة السابقة بمعامل ثان، يوضح نطاق الاسم الذي سيضاف إليه الجدول داخل مجموعة البيانات.. هذا يتيح لك إضافة أكثر من جدول بنفس الاسم إلى مجموعة الجداول، لكن كلا منها ينتمي إلى نطاق مختلف.. هذا مفيد عندما تملأ مجموعة البيانات بجداول متشابهة الأسماء من أكثر من قاعدة بيانات.. مثلا:
Ds.Tables.Add("MyTable", "Db1")
Ds.Tables.Add("MyTable", "Db2")
- والصيغة الرابعة تستقبل كائن جدول DataTable، لتتم إضافته إلى المجموعة.
لاحظ أن الصيغ الثلاث الأولى تعيد كائنا من النوع DataTable يمثل الجدول الذي تمّ إنشاؤه، بينما الصيغة الرابعة هي إجراء لا يعيد أية قيمة، وذلك لأنك أرسلت إليها كائن الجدول بالفعل، ولا تحتاج إلى مرجع آخر له.
 
 يمكن حذفه CanRemove:
تعيد True إذا كان من الممكن حذف كائن الجدول DataTable المرسل كمعامل من مجموعة الجداول.. وتعيد هذه الوسيلة False إذا لم يكن الجدول موجودا في المجموعة، أو كان داخلا في علاقة.. والكود التالي سيعيد False لأن حذف جدول المؤلفين سيدمر تكامل العلاقة مع جدول الكتب:
MsgBox(Ds.Tables.CanRemove(Ds.Tables("Authors")))
 
 حذف Remove:
تحذف الجدول المرسل إليها كمعامل، ولها نفس صيغ الوسيلة Add ما عدا الصيغة الأولى التي بدون معاملات.. لاحظ أنك لا تستطيع حذف جدول من مجموعة البيانات إذا كان داخلا في علاقة، فهذا سيؤدي إلى حدوث خطأ في البرنامج.. والمقصود بالعلاقة هنا، العلاقة المعرفة في مجموعة البيانات، فلو وضعت جدولي المؤلفين والكتب في مجموعة البيانات بدون إنشاء علاقة بينهما، فسيمكنك حذف أيهما بدون مشاكل رغم أن هناك علاقة بينهما فعلا في قاعدة البيانات.. أما لو أنشأت العلاقة بينهما في مجموعة البيانات، فعليك حذفها أولا قبل محاولة حذف أي من الجدولين.. والأفضل استخدام الوسيلة CanRemove أولا قبل محاولة حذف الجدول.. مثال:
Dim T = Ds.Tables("Authors")
If Ds.Tables.CanRemove(T) Then
    Ds.Tables.Remove(T)
End If
 
 تحتوي على Contains:
تعيد True إذا كان الجدول المرسل كمعامل موجودا في مجموعة البيانات.. ولهذه الوسيلة صيغتان، تماثلان الصيغتين الثانية والثالثة للوسيلة Add.
 
 رقم العنصر IndexOf:
تعيد رقم الجدول المرسل إليها كمعامل إذا كان موجودا في المجموعة، وتعيد -1 إن لم يكن موجودا، ولها نفس صيغ الوسيلة Add ما عدا الصيغة الأولى التي بدون معاملات.
 
كما تمتلك مجموعة الجداول حدثين جديدين، هما:
 
  المجموعة تتغير CollectionChanging:
ينطلق عندما توشك جداول المجموعة على التغير، نتيجة إضافة أو حذف جدول.. والمعامل الثاني e لهذا الحدث من النوع CollectionChangeEventArgs، وهو يمتلك الخاصيتين التاليتين:
 
Action
تعيد إحدى قيم المرقم CollectionChangeAction التي توضح نوع الفعل الذي سبب تغير المجموعة.. وهذه القيم هي:
- Add: إضافة عنصر إلى المجموعة.
- Remove: حذف عنصر من المجموعة.
- Refresh: تغيرت عناصر المجموعة كلها، بسبب بعض الوسائل مثل Clear التي تمحو كل العناصر.
Element
تعيد كائنا Object يحتوي على العنصر الذي تعرض للتغيير.. لاحظ أن قيمة هذا العنصر ستكون Nothing إذا كانت للخاصية Action القيمة Refresh.
 
  المجموعة تغيرت CollectionChanged:
ينطلق بعد حدوث التغيير فعليا في عناصر المجموعة.. والمعامل الثاني e لهذا الحدث من النوع CollectionChangeEventArgs الذي تعرفنا عليه في الحدث السابق.
 
من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت بتقنية ADO .NET.. للتنزيل:
 

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

إرسال تعليق

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

صفحة الشاعر