![]() |
|
[VB.NET] الـDataSet تحت المجهر - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40) +--- قسم : قسم مقالات قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=42) +--- الموضوع : [VB.NET] الـDataSet تحت المجهر (/showthread.php?tid=1534) |
الـDataSet تحت المجهر - أبوبكر سويدان - 12-01-14 السلام عليكم ورحمة الله وبركاته الحمد لله رب العالمين، والصلاة والسلام على أشرف خلق الله أجمعين، سيدنا محمد صلى الله عليه وعلى آله وصحبه أجمعين، وبعد أحييكم أخوتي في هذا الصرح العلمي، وأدعوكم إلى متابعة بعض ما تعلمته بخصوص الـDataSet، بشيء من التفصيل. كمبتدئ في البرمجة، لم أعرف الكثير عن هذا الكلاس، وفي برامجي المتواضعة لم أستفد من إمكانياتها بشكل كافٍ. قمتُ بالبحث في الشبكة عن كل ما يتعلق بهذا الكلاس من معلومات، وترجمتُ بعض ما وجدته وطبقته، واستفدت الكثير منه، ووجب عليّ توفيره للأخوة المبتدئين، كنوع من العرفان لهذا المنتدى المبارك. في هذا الموضوع، سأتحدث عن الـDataSet ، عن مكوناتها، وطريقة إنشائها، وسأشرح بعض أهم خصائصها، وأهم وظائفها. فأبدأ على بركة الله.. الكلاس DataSet هي أماكن لتخزين جداول البيانات في الذاكرة، وهي مؤقتة، تفقد البيانات التي تحملها بانتهاء العملية. كل DataSet تحتوي على جدول بيانات DataTable أو أكثر وكذلك على علاقات DataRelation يمكن إنشاؤها بين الجداول، وعلى DataView. كل DataTable يحتوي على سجلات أو صفوف DataRows، وكل DataRow يحتوي على مجموعة من الأعمدة أو الحقول DataColumns. وهذا الكلاس يتبع مباشرة لفضاء الأسماء System.Data. يعني، قبل البدء في كتابة الأكواد يجب استدعاء هذا الفضاء: PHP كود : Imports System.Data إنشاء DataSet نستطيع إنشاء DataSet جديدة من خلال استدعاء “منشيء الـDataSets”، أو ما يسمى بالإنجليزية DataSet Constructor، وبشكل اختياري؛ يمكننا إعطاؤها وصفاً ، وفي حال ترك هذا الخيار يتم إعطاؤها اسماً افتراضياً وهو: “NewDataSet”. PHP كود : Dim customerOrders As DataSet = New DataSet(“CustomerOrders”) أو: PHP كود : Dim customerOrders As New DataSet(“CustomerOrders”)في الكود السابق تم إنشاء DataSet بالاسم CustomerOrders، وفي الكود التالي يتم إنشاء DataSet بالاسم الافتراضي: PHP كود : Dim customerOrders As New DataSet ولنجرب هذا الكود أيضاً: PHP كود : Dim customerOrders As New DataSetأهم خصائص الـDataSet ككل كائن ، تدعم الـDataSet مجموعة من الخصائص، لعل من أبرزها: الخاصية DataSetName: ومن خلالها يمكن ضبط / استرجاع اسم الـDataSet الحالية. PHP كود : Dim dataSet As DataSetالخاصية IsInitialized : وترجع قيمة منطقية تحدد ما إذا تم تهيئة الـDataSet أم لا. PHP كود : Dim dataSet As DataSetالخاصية Tables: ومن خلالها يمكن استرجاع تجمع الـDataTables التابعة لها. أو اختيار جدول محدد عن طريق اسمه أو رقم تسلسله. سأتطرق لها في أمثلة الفقرات التالية DataSet Methods كما تدعم الـDataSet مجموعة من الوظائف أو Methods (لم أجد ترجمة أخرى لها) لعل من أبرزها: الوظيفة AcceptChanges: وتقوم بتطبيق كافة التغييرات التي طرأت على الـDataSet ومحتوياتها، منذ آخر مرة تم استدعاء هذه الوظيفة. PHP كود : Private Sub AcceptChanges()الوظيفة Clear: وتقوم بمسح كافة بيانات الـDataSet وذلك من خلال مسح كافة السجلات في كافة الجداول التي تتبع هذه الـDataSet. PHP كود : dataSet.Clear() الوظيفة Clone: وتقوم بنسخ تركيبة الـDataSet بما في ذلك تركيبات الجداول والعلاقات، دون نسخ البيانات التي تحملها. PHP كود : Dim dataSet As DataSetولنجرب الكود بدون إعطاء اسم للـDataSet: PHP كود : Dim dataSet As DataSetالوظيفة Copy: وتقوم بنسخ تركيبة الـDataSet بما في ذلك تركيبات الجداول والعلاقات مع كافة البيانات التي تحملها. PHP كود : Dim dataSet As DataSetولنجرب الكود بدون إعطاء اسم للـDataSet: PHP كود : Dim dataSet As DataSetالوظيفة GetChanges: تأخذ نسخة من الـDataSet والتي تم إجراء عمليات تعديل وتغيير عليها منذ أن تم تعبئتها بالبيانات أو منذ آخر مرة تم تطبيق الوظيفة AcceptChanges، وتخزنها في DataSet جديدة. الوظيفة HasChanges: وترجع قيمة منطقية (True/False) تحدد ما إذا تم تغيير في محتويات الـDataSet، والتغييرات تشمل إضافة صفوف جديدة، أو تعديل صفوف موجودة، أو حذف لبعض أو كل الصفوف. PHP كود : If dataSet.HasChanges = True Thenالوظيفة Merge(DataSet): وتقوم بدمج الـDataSet وتركيبتها كاملةً مع تركيبة الـDataSet الحالية. ولكي نفهمها نكتب: PHP كود : Dim FirstDataSet As New DataSet(“FirstDataSet”)وهنا قمنا بإنشاء DataSet وDataTable، الخطوة التالية هي ضم الجدول إلى FirstDataSet: PHP كود : FirstDataSet.Tables.Add(FirstTable) والآن: FirstDataSet تحتوي على جدول واحد هو FirstTable، ويمكننا التحقق من ذلك عن طريق كتابة: PHP كود : MsgBox(FirstDataSet.Tables(0).TableName) والآن: نقوم بإنشاء DataSet جديدة باسم SecondDataSet فارغة ولا تحتوي على أي جدول: PHP كود : Dim SecondDataSet As New DataSet(“SecondDataSet”) ونقوم بدمج محتويات الـFirstDataSet مع محتويات الـSecondDataSet: PHP كود : SecondDataSet.Merge(FirstDataSet) وهنا تمت عملية الدمج، فعند كتابة: PHP كود : MsgBox(SecondDataSet.Tables(0).TableName) يعطينا نفس اسم الجدول الموجود في FirstDataSet، وهذا دليل على صحة العملية. الوظيفة Merge(DataTable): سأشرحها لاحقاً عند الحديث عن الـDataTable إن شاء الله. الوظيفة Merge(DataSet, Boolean): وتقوم بدمج الـDataSet وتركيبتها كاملةً مع تركيبة الـDataSet الحالية، مع قيمة منطقية تحدد ما إذا كانت عملية الدمج تشمل التغييرات أم لا. PHP كود : SecondDataSet.Merge(FirstDataSet, False) هنا تتم عملية الدمج بحيث لا تشمل التغييرات. PHP كود : SecondDataSet.Merge(FirstDataSet, True) هنا تتم عملية الدمج بحيث تشمل التغييرات. الوظيفة RejectChanges: وتقوم بإلغاء كافة التغييرات التي طرأت على الـDataSet منذ تعبئتها بالبيانات لأول مرة، أو منذ آخر مرة تم استدعاء الطريقة AcceptChanges فيها. الوظيفة Reset: وتقوم بمسح محتويات الـDataSet وإرجاعها إلى حالتها السابقة. PHP كود : Dim FirstDataSet As New DataSet(“FirstDataSet”)تنويه هذه المواضيع وغيرها اقتبستها من كتاب أعمل عليه حالياً لشرح كل ما يتعلق بالـDataSet ومكوناتها بالتفصيل، وكذلك على طرق التعامل مع قواعد البيانات المختلفة، وسأنشر الكتاب بصيغة إلكترونية مجانية إن شاء الله متى انتهيت منه. كل الأكواد في هذه السلسلة مجربة على لغة فجول بيسك دوت نيت 2010. وأخيراً.. مازالت هناك الكثير من الخصائص الأخرى بالطبع، وكذلك وظائف أخرى تفيد المتقدمين في التعامل مع قواعد البيانات في لغة فجول بيسك 2010، ولكنني آثرت الحديث عن أهم تلك الخصائص والوظائف، مراعياً أن الموضوع موجهة للمبتدئين أمثالي. كما أرجو منكم مشاركتي بتعليقاتكم وملاحظاتكم وتصحيحاتكم. شكراً لكم. RE: الـDataSet تحت المجهر - Sajad - 25-01-14 السلام عليكم جزاك الله خيرا و وفقك لما يحبه ويرضاه تحياتي RE: الـDataSet تحت المجهر - أبوبكر سويدان - 25-01-14 جبرت بخاطري الله يجبر بخاطرك
RE: الـDataSet تحت المجهر - hoob computer - 26-01-14 (12-01-14, 01:12 PM)أبوبكر سويدان كتب : الوظيفة Copy: بسم الله الرحمن الرحيم و عليكم السلام و رحمة الله و بركاته, أخي العزيز أبو بكر سويدان, و الله كأنك كنت تعرف بأنني في أمس الحاجة إلى هكذا معلومات حول DataSet حيث أنني لم أقرأ عنها الكثير و إنما تعلمتها بنفسي و هذا يعتبر في بعض الأحيان خطأ لما يترتب عليه البرمجة بدون إحتراف ... و لكنك وفيت و كفيت في موضوع و جزاك الله خيراً عليه و جعله في ميزان حسناتك ... بالإضافة إلى أنني وجدت خطأ بسيط في كود حضرتك و ربما أنك لم تنتبه له أثناء كتابته بسبب السرعة في كتابته ... و قمت بإضافة تعديل موضح في الكود يوضح مكان الخطأ مع التصحيح .. جزاك الله خيراً ... السلام عليكم RE: الـDataSet تحت المجهر - أبوبكر سويدان - 26-01-14 السلام عليكم ورحمة الله أشكرك أخي hoob.computer على التصحيح، جزاك الله خيراً، وأتمنى لك الاستفادة.
RE: الـDataSet تحت المجهر - hoob computer - 26-01-14 (26-01-14, 01:24 PM)أبوبكر سويدان كتب : السلام عليكم ورحمة الله و جزاك الله خيراً أخي الكريم, و لكن من الأفضل تصحيح الكود في مشاركتك الاولى كي لا يختلط الأمر على المبتدئين ![]() السلام عليكم |