تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الحلقة 2 من السلسلة 167
#2
سأبدأ بشرح هذا الفئة لانه مستقل تماما عن المشروع ويمكن استخدامه بأي مشروع قاعدة بيانات وهو عباره عن تجمع من الارقام الصحيحة التي تمثل مفاتيح مجموعة من القيود في جدول معين في قاعدة البيانات
الفرق بين المصطلح فئة (نوع) Class والمصطلح كائن Object هو ان الفئة هي الكود والكائن هو المتغير الذي نعلنه من نوع تلك الفئة

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Class[/color][/SIZE][SIZE=2] IDs[/SIZE]
[SIZE=2][color=#0000ff]Inherits[/color][/SIZE][SIZE=2] CollectionBase[/SIZE]
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2]()[/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE]
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2]([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] Table [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataTable, [/SIZE][SIZE=2][color=#0000ff]Optional[/color][/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] Filter [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]String[/color][/SIZE][SIZE=2] = [/SIZE][SIZE=2][color=#800000]""[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#0000ff]Optional[/color][/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] Sort [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]String[/color][/SIZE][SIZE=2] = [/SIZE][SIZE=2][color=#800000]""[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#0000ff]Optional[/color][/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] ColumnName [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]String[/color][/SIZE][SIZE=2] = [/SIZE][SIZE=2][color=#800000]""[/color][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Rows() [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataRow = Table.Select(Filter, Sort)[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Row [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataRow[/SIZE]
[SIZE=2][color=#0000ff]If[/color][/SIZE][SIZE=2] ColumnName = [/SIZE][SIZE=2][color=#800000]""[/color][/SIZE][SIZE=2][color=#0000ff]Then[/color][/SIZE]
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] Row [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] Rows[/SIZE]
[SIZE=2]list.Add(Row(0))[/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
[SIZE=2][color=#0000ff]Else[/color][/SIZE]
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] Row [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] Rows[/SIZE]
[SIZE=2]list.Add(Row(ColumnName))[/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]If[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE]
يرث CollectionBase وهو عبارة عن تجمع من الارقام
ماهو التجمع Collection: ان المصفوفة Array عبارة عن مجموعة محددة من القيم ذات النوع الواحد ويتم الوصول الى اي قيمة بواسطة تسلسلها والتجمع تطوير للمصفوفة حيث اصبحت عدد القيم التي فيها غير محددة ويوجد ما هو احدث من التجمع وهو القاموس Dictionary وهو تطوير للتجمع فالوصول لاي عنصر من عناصره يتم لوصول اليه بواسطة مفتاح وهو من نوع كائن ايضا مثلا نص

الاجراء New وهذا الاجراء يتنفذ عند انشاء اي متغير من هذه الفئة نرى ان هذا الاجراء فاضي وهذا يعني اننا يمكن اعلان متغير من هذا النوع (فئة) بدون اي كود

الاجراء New هذه طريقة ثانية لبناء متغير من هذا النوع وهو بتمرير الاتي
Table As DataTable جدول من قاعدة البيانات وهو الجدول الذي نرغب من هذا الكائن ان يحمل مفاتيح مجموعة من قيوده
Filter As String نص يمثل الشروط التي نرغب بتجميع مفاتيح القيود التي تتوافق مع هذا الشرط
Sort As String نص نضع فيه اسم الحقل الذي نرغب بان تكون القيود مرتبه عليه
ColumnName As String نص نضع فيه الحقل الذي نرغب بوجوده بدل المفتاح واستخدامه قليل
المصطلح Optional الذي يسبق المتغير المرر للاجراء معناه ان هذا المتغير اختياري التمرير اي من الممكن عدم تمرير هذا المتغير وهو سيأخذ القيمة الافتراضية له الموجوده بعده
يحتوي هذا الاجراء على الكود التالي

كود :
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Rows() [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataRow = Table.Select(Filter, Sort)[/SIZE]
اعلان عن مصفوفه من القيود من نوع DataRow وتساوي الاجراء Select من الجدول المرر ونسلم للاجراء Select الشروط وحقل الترتيب ويرجع مصفوفة من DataRow التي تنتمي لهذه الشروط

كود :
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Row [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataRow[/SIZE]
نعلن عن متغير من نوع قيد بيانات

كود :
[SIZE=2][color=#0000ff]If[/color][/SIZE][SIZE=2] ColumnName = [/SIZE][SIZE=2][color=#800000]""[/color][/SIZE][SIZE=2][color=#0000ff]Then[/color][/SIZE]
اذالم نكن قد سلمنا اسم الحقل المراد تجمعه سيتنفذ الكود التالي

كود :
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] Row [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] Rows[/SIZE]
[SIZE=2]list.Add(Row(0))[/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
هذا التكرار يتحرك على جميع قيود البيانات الموجودة في المصفوفة ويضيف قيمة الحقل الاول من كل قيد في المتغير List وهو من مكونات ال CollectionBase الذي ورثناه وهو الذي يحمل القيم الموجودة في التجمع

كود :
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] Row [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] Rows[/SIZE]
[SIZE=2]List.Add(Row(ColumnName))[/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
والا سنضيف الى المتغير List الحقل المطلوب تعبئته
الخاصية Item

كود :
[SIZE=2][color=#0000ff]Default[/color][/SIZE][SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]ReadOnly[/color][/SIZE][SIZE=2][color=#0000ff]Property[/color][/SIZE][SIZE=2] Item([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] index [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE][SIZE=2]) [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE]
[SIZE=2][color=#0000ff]Get[/color][/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2][color=#0000ff]CType[/color][/SIZE][SIZE=2](List.Item(index), [/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Get[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Property[/color][/SIZE]
Default تعني افتراضي وهذا يجعل هذه الخاصية هي الافتراضية حيث اذا كتبنا المتغير فقط كأنه استدعينا هذه الخاصية
تستلم تسلسل المفتاح المطلوب وترجع قيمته
الدالة CType هي اختصار لـ ConvertType وهذه الدالة تحول من اي نوع الى نوع ثاني اذا كان بالامكان تغييره فهي الان تحول القيمة الموجوده الى رقم من نوع Long عدد صحيح كبير

الخاصية IndexOf

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]ReadOnly[/color][/SIZE][SIZE=2][color=#0000ff]Property[/color][/SIZE][SIZE=2] IndexOf([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] ID [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE][SIZE=2]) [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE]
[SIZE=2][color=#0000ff]Get[/color][/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2] List.IndexOf(ID)[/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Get[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Property[/color][/SIZE]
خاصية للقراءة فقط نسلم لها القيمة وتسلمنا تسلسلها وتفيد للبحث

الخاصية CountIDs

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]ReadOnly[/color][/SIZE][SIZE=2][color=#0000ff]Property[/color][/SIZE][SIZE=2] CountIDs() [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE]
[SIZE=2][color=#0000ff]Get[/color][/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2][color=#0000ff]CType[/color][/SIZE][SIZE=2](List.Count, [/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Get[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Property[/color][/SIZE]
ترجع عدد المفاتيح الموجودة

الخاصية Contains

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]ReadOnly[/color][/SIZE][SIZE=2][color=#0000ff]Property[/color][/SIZE][SIZE=2] Contains([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] ID [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE][SIZE=2]) [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Boolean[/color][/SIZE]
[SIZE=2][color=#0000ff]Get[/color][/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2] List.Contains(ID)[/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Get[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Property[/color][/SIZE]
ترجع صح اذا المفتاح المسلم لها موجود وخطأ اذا لم يكن موجودا

الدالة AddID

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE][SIZE=2] AddID([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] ID [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE][SIZE=2]) [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] IDs[/SIZE]
[SIZE=2]List.Add(ID)[/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE]
لاضافة مفتاح الى موجودات التجمع

الدالة AddIDs

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE][SIZE=2] AddIDs([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] IDs [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] IDs) [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] IDs[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] i [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE]
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] i [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] IDs[/SIZE]
[SIZE=2]List.Add(i)[/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE]
لاضافة تجمع مفاتيح الى التجمع الحالي

الدالة RemoveID والدالة RemoveIDs لالغاء مفتاح واحد او تمجع من المفاتيح من التجمع الحالي

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE][SIZE=2] RemoveID([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] ID [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE][SIZE=2]) [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] IDs[/SIZE]
[SIZE=2][color=#0000ff]If[/color][/SIZE][SIZE=2] List.Contains(ID) [/SIZE][SIZE=2][color=#0000ff]Then[/color][/SIZE]
[SIZE=2]List.Remove(ID)[/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]If[/color][/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE]
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE][SIZE=2] RemoveIDs([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] IDs [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] IDs) [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] IDs[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] i [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Long[/color][/SIZE]
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] i [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] IDs[/SIZE]
[SIZE=2]RemoveID(i)[/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE]
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الحلقة 2 من السلسلة 167 - بواسطة Raggi Tech - 02-10-12, 04:03 PM
الحلقة 2 من السلسلة 167 - بواسطة Raggi Tech - 02-10-12, 04:03 PM
الحلقة 2 من السلسلة 167 - بواسطة Raggi Tech - 02-10-12, 04:04 PM
الحلقة 2 من السلسلة 167 - بواسطة Raggi Tech - 02-10-12, 04:04 PM
الحلقة 2 من السلسلة 167 - بواسطة Raggi Tech - 02-10-12, 04:05 PM
الحلقة 2 من السلسلة 167 - بواسطة Raggi Tech - 02-10-12, 04:06 PM
الحلقة 2 من السلسلة 167 - بواسطة Raggi Tech - 02-10-12, 04:10 PM
الحلقة 2 من السلسلة 167 - بواسطة Raggi Tech - 02-10-12, 04:11 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الحلقة السابعة من السلسلة 167- استخراج جميع معلومات الجهاز RaggiTech 5 4,921 29-06-21, 05:29 AM
آخر رد: kebboud
  برامج 167 للبرمجة الحلقة الاولى RaggiTech 0 1,923 03-10-12, 01:38 AM
آخر رد: RaggiTech
  الحلقة صفر من السلسلة 167 للبرمجة RaggiTech 0 2,024 02-10-12, 04:32 PM
آخر رد: RaggiTech
  الحلقة العاشرة من السلسلة 167 - اضافة المخطط (Chart) الى التقرير RaggiTech 0 2,192 02-10-12, 04:31 PM
آخر رد: RaggiTech
  الحلقة السادسة من السلسلة 167 (المبلغ كتابتا) RaggiTech 0 2,001 02-10-12, 04:29 PM
آخر رد: RaggiTech
  الحلقة الرابعة من السلسلة 167 - حل مشكلة Socket مع مثال شات RaggiTech 0 2,367 02-10-12, 04:24 PM
آخر رد: RaggiTech
  الحلقة الخامسة من السلسلة 167 كود برنامج مسنجر كامل على الشبكة المحلية RaggiTech 0 2,077 02-10-12, 04:18 PM
آخر رد: RaggiTech
  الحلقة الثامنة من السلسلة 167- دارسة في الألوان RaggiTech 0 2,040 02-10-12, 04:17 PM
آخر رد: RaggiTech
  الحلقة التاسعة من السلسلة 167 حفظ الصور في تطبيق قواعد بيانات RaggiTech 0 2,409 02-10-12, 04:15 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: