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

كود :
[SIZE=2][color=#0000ff]Imports[/color][/SIZE][SIZE=2] System.Data.SqlClient[/SIZE]
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Module[/color][/SIZE][SIZE=2] World : [/SIZE][SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2] Our [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] Manager : [/SIZE][SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Module[/color][/SIZE]
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Class[/color][/SIZE][SIZE=2] Manager[/SIZE]
[SIZE=2][color=#0000ff]Private[/color][/SIZE][SIZE=2] Cnn [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] SqlConnection([/SIZE][SIZE=2][color=#800000]"Data Source=.\SQLEXPRESS;AttachDbFilename='"[/color][/SIZE][SIZE=2] & Application.StartupPath & [/SIZE][SIZE=2][color=#800000]"\Stores.Mdf';Integrated Security=True;User Instance=True"[/color][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2] Data [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] StoresDataSet[/SIZE]
[SIZE=2][color=#0000ff]Private[/color][/SIZE][SIZE=2] SystemKey [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Integer[/color][/SIZE]
[SIZE=2][color=#0000ff]Private[/color][/SIZE][SIZE=2] LicenceKey [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]String[/color][/SIZE]
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2] Path [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]String[/color][/SIZE][SIZE=2] = Application.StartupPath[/SIZE]
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2] ApplicationName [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]String[/color][/SIZE]
سنبدا باستيراد الكائن SqlClient الذي يتكون من جميع كائنات قاعدة البيانات

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Module[/color][/SIZE][SIZE=2] World : [/SIZE][SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2] Our [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] Manager : [/SIZE][SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Module[/color][/SIZE]
هذا الكود يعلن عن متغير من نوع الفئة Manager واسمه Our
(وكنت قبل الفيجوال 2005 اسميه My وقد استخدم هذا المتغير في اصل اللغة وغيرته الى Our وقد احدثت هذه الحادثة مفاجأه لطلابي لانهما متشابهان بالعمل)

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Class[/color][/SIZE][SIZE=2] Manager[/SIZE]
[SIZE=2][color=#0000ff]Private[/color][/SIZE][SIZE=2] Cnn [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] SqlConnection([/SIZE][SIZE=2][color=#800000]"Data Source=.\SQLEXPRESS;AttachDbFilename='"[/color][/SIZE][SIZE=2] & Application.StartupPath & [/SIZE][SIZE=2][color=#800000]"\Stores.Mdf';Integrated Security=True;User Instance=True"[/color][/SIZE][SIZE=2])[/SIZE]
المتغير Cnn من نوع SqlConnection كائن الاتصال بقاعدة البيانات ونتوقع ان تضع قاعدة البيانات بجانب البرنامج اي الملف Exe واسم قاعدة البيانات Stors

المتغير Data المعلن من نوع StoresDataSetالتي هيكل قاعدة البيانات
المتغيرات SystemKey, LicenceKey تخص حماية النظام من النسخ وفي مشروعنا هذا لم نعمل حماية له وسيكون موضوع احد الحلقات القادمة من السلسلة
المتغير Path يحمل موقع البرنامج وقاعدة البيانات ويفيد في ايجاد الملفات المرفقة ان وجدت
المتغير ApplicationName يحمل اسم التطبيق

كود :
[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]ReadDate()[/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] ReadDate()[/SIZE]
[SIZE=2]Data = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] StoresDataSet[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Adp [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] SqlDataAdapter[/SIZE]
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] aTable [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataTable [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] Data.Tables[/SIZE]
[SIZE=2]Adp = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] SqlDataAdapter([/SIZE][SIZE=2][color=#800000]"Select * From "[/color][/SIZE][SIZE=2] & aTable.TableName, Cnn)[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Cmdbld [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] SqlCommandBuilder(Adp)[/SIZE]
[SIZE=2]Adp.Fill(aTable)[/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE]
يجدد المتغير العام Data ويعلن عن متغير من نوع SqlDataAdapter وهذا الكائن هو حلقة الوصل بين Connection و DataSet فهو يعبيء DataSet او اي جزء منها من خلال Cnn

لجميع جداول الموجودة في DataSet نسلم لل Adapter جملة SQL جميع الحقول وجميع القيود في الجدول
نبني SqlCommandBuilder وهو باني الاوامر ونسلم له Adp ثم نستدعي هذا المتغير لتعبئة الجدول ببياناته

الاجراء WriteData المختص بحفظ البيانات وهو مشابه للاجراء قراءة بيانات

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE][SIZE=2] WriteData()[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Adp [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] SqlDataAdapter[/SIZE]
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] aTable [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataTable [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] Data.Tables[/SIZE]
[SIZE=2]Adp = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] SqlDataAdapter([/SIZE][SIZE=2][color=#800000]"Select * From "[/color][/SIZE][SIZE=2] & aTable.TableName, Cnn)[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Cmdbld [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] SqlCommandBuilder(Adp)[/SIZE]
[SIZE=2]Adp.Update(aTable)[/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE]
الاجراء Run لتشغيل اي ملف او برنامج خارجي

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE][SIZE=2] Run([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] Path [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]String[/color][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][color=#0000ff]Try[/color][/SIZE]
[SIZE=2]Process.Start(Path)[/SIZE]
[SIZE=2][color=#0000ff]Catch[/color][/SIZE][SIZE=2] ex [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] Exception[/SIZE]
[SIZE=2]MessageBox.Show([/SIZE][SIZE=2][color=#800000]"The file "[/color][/SIZE][SIZE=2] & Path & [/SIZE][SIZE=2][color=#800000]" Can't be found..."[/color][/SIZE][SIZE=2] & vbCrLf & [/SIZE][SIZE=2][color=#800000]"Try again latter..."[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Run..."[/color][/SIZE][SIZE=2], MessageBoxButtons.OK, MessageBoxIcon.Error)[/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Try[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE]
الاجراء NewRow المتخصص باضافة قيد جديد لاي جدول بيانات

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Shared[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE][SIZE=2] NewRow([/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]As[/color][/SIZE][SIZE=2][color=#0000ff]Integer[/color][/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] ID [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]Integer[/color][/SIZE][SIZE=2] = 1[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] TmpIDs [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] IDs(Table)[/SIZE]
[SIZE=2]TmpIDs = TmpIDs.Sort[/SIZE]
[SIZE=2][color=#0000ff]If[/color][/SIZE][SIZE=2] TmpIDs.Count > 0 [/SIZE][SIZE=2][color=#0000ff]Then[/color][/SIZE][SIZE=2] ID = TmpIDs(TmpIDs.Count - 1) + 1[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Rw [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataRow = Table.NewRow[/SIZE]
[SIZE=2]Rw = FillDefaultData(Rw)[/SIZE]
[SIZE=2]Rw(0) = ID[/SIZE]
[SIZE=2]Table.Rows.Add(Rw)[/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2] ID[/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE]
يستلم هذا الاجراء جدول بيانات يكون اعلى مفتاح للقيد المراد انشاءه وهو عدد قيود الجدول مضاف لو 1
يكون القيد الجديد ويسدعي الدالة FillDefaultData لكي تعبئه بالقيم الافتراضية ويضيفه للجدول

الدالة FillDefaultData تستلم قيد وتمر على الحقول التي فيه وتعبئها بقيم افتراضية

كود :
[SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Shared[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE][SIZE=2] FillDefaultData([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] Row [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataRow) [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataRow[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Cln [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] DataColumn[/SIZE]
[SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] Typ [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]String[/color][/SIZE]
[SIZE=2][color=#0000ff]For[/color][/SIZE][SIZE=2][color=#0000ff]Each[/color][/SIZE][SIZE=2] Cln [/SIZE][SIZE=2][color=#0000ff]In[/color][/SIZE][SIZE=2] Row.Table.Columns[/SIZE]
[SIZE=2][color=#0000ff]If[/color][/SIZE][SIZE=2] IsDBNull(Row(Cln)) [/SIZE][SIZE=2][color=#0000ff]Then[/color][/SIZE]
[SIZE=2]Typ = Cln.DataType.ToString.Substring(7) [/SIZE][SIZE=2][color=#008000]' For Cut [System.][/color][/SIZE]
[SIZE=2][color=#0000ff]Select[/color][/SIZE][SIZE=2][color=#0000ff]Case[/color][/SIZE][SIZE=2] Typ[/SIZE]
[SIZE=2][color=#0000ff]Case[/color][/SIZE][SIZE=2][color=#800000]"String"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Char"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Object"[/color][/SIZE]
[SIZE=2]Row(Cln) = [/SIZE][SIZE=2][color=#800000]""[/color][/SIZE]
[SIZE=2][color=#0000ff]Case[/color][/SIZE][SIZE=2][color=#800000]"DateTime"[/color][/SIZE]
[SIZE=2]Row(Cln) = Now.Date[/SIZE]
[SIZE=2][color=#0000ff]Case[/color][/SIZE][SIZE=2][color=#800000]"Byte"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Integer"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Long"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Short"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Int16"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Int32"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Int64"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Decimal"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Single"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Double"[/color][/SIZE]
[SIZE=2]Row(Cln) = 0[/SIZE]
[SIZE=2][color=#0000ff]Case[/color][/SIZE][SIZE=2][color=#800000]"Boolean"[/color][/SIZE]
[SIZE=2]Row(Cln) = [/SIZE][SIZE=2][color=#0000ff]False[/color][/SIZE]
[SIZE=2][color=#0000ff]Case[/color][/SIZE][SIZE=2][color=#0000ff]Else[/color][/SIZE]
[SIZE=2]InputBox([/SIZE][SIZE=2][color=#800000]"Insert This Type to FillDefault Function"[/color][/SIZE][SIZE=2], [/SIZE][SIZE=2][color=#800000]"Call Programmer"[/color][/SIZE][SIZE=2], Typ)[/SIZE]
[SIZE=2][color=#0000ff]Stop[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]Select[/color][/SIZE]
[SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][color=#0000ff]If[/color][/SIZE]
[SIZE=2][color=#0000ff]Next[/color][/SIZE]
[SIZE=2][color=#0000ff]Return[/color][/SIZE][SIZE=2] Row[/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

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


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