الدكتورة هدى

.:: إدارية الأقـسـام العامـة ::.

شرح أساسيات برمجة قواعد البيانات في فيجوال بيسك دوت نت


قواعد البيانات DATABASE



الموضوع شرحي وليس منقول


مقدمة:ماهي قواعد البيانات:نستطيع أن نقول عنها بأنها مجموعة منظمة من المعلومات مخزنة في ملف ويمكننا إنشاء قواعد بيانات فعالة باستعمال مجموعة متنوعة من برامج قواعد البيانات من بينها مايكروسوفت أكسس ومايكروسوفت SQL وأوراكل وتعتبر برمجة قواعد البيانات من أهم الاختصاصات في البرمجة لان الشركات الكبرة والصغرة والمؤسسات والجمعيات وغيرها تعتمد اعتمادا أساسيا على تطبيقات قواعد البيانات لتخزين بياناتها سواء كانت أسماء العمال والموظفين وعناوينهم وأسماء الزبائن وكشوفات حساباتهم ..........الخ .




سنتعلم في هذا الشرح العمليات الأساسية على قواعد البيانات باستخدام تقنية ADO.NET الموجودة في فيجوال بيسك دوت نت وٍسأستخدم فيجوال بيسك دوت نت 2008 وسأقوم بشرح الأمور التالية:


1- ربط قاعدة بيانات من نوع أكسس مع فيجوال بيسيك دوت نت


2- عرض بيانات شخص معين من الجدول الثاني بعد تحديد رقمه بالجدول الأول باستخدام DataGrid


3- عرض بيانات أكثر من جدول داخل أداة Data Grid واحدة


4- كيف نستخدم عبارات الاستعلام SQL


5- بناء صف يدويا للتعامل مع البيانات


6- إنشاء مشهد للبيانات باستخدام الأداة DataView


7- إنشاء تقارير كريستال ريبورت بسيطة


حتى نستطيع ربط قاعدة بيانات من نوع أكسس هناك طريقتان لذلك إما عن طريق الإطارDataSourec أو إما عن طريق الأدوات OleDbConnection و


OleDbDataAdapterوغيرها .




اولا : الإطار DataSourec : وهو طريقة سهلة جدا لربط قاعدة البيانات وظهر في الإصدارات التي بعد الإصدار 2005 فمن خلاله تستطيع ربط قاعدة البيانات بخطوات بسيطة فقط وبدون أي كود برمجي الآن سأقوم بتطبيق مثال عملي :




مثال على ما سبق:




1- افتح فيجوال ستديو واختر مشروع جديد من نوع WindowsApplication قم بتسميته DATABASE With Data Source ستفتح لك بيئة التطوير مشروعا جديدا فيه نافذة جديدة فارغة


2- الآن من القائمة Data اختر Show Data Sources وذلك لإظهار الإطار Data Sources


إذا كان مخفيا شاهد الصورة التالية:


357678517.jpg


3- الآن اختر الاختيار Add New Sources الموجود داخل الإطار data Sources فسيفتح معالج تستطيع من خلاله إنشاء الاتصال بقاعدة البيانات اختر منه الاختيار DataBase ثم اضغط على التالي للمتابعة شاهد الصورة:


306278242.jpg

4- الآن اختر الخيار New Connection بعدها سيظهر لك مربع الحوارChoose Data Source

ستختار منه نوع قاعدة البيانات وفيه عدة أنواع Access,,Oracle,,SQL Server,,وغيرها نحن سنختار Microsoft Access DataBase File قاعدة أكسس ثم اضغط على Continue شاهد الصورة التالية :

936099789.jpg

5-الآن اضغط على الزر Browse واختر قاعدة بيانات أكسس من جهازك شاهد الصورة:

871009298.jpg

6- الآن تستطيع اختبار إذا تم الاتصال مع قاعدة البيانات بنجاح وذلك عن طريق ضغط الزر TestConnection إذا كانت كل الأمور صحيحة فستظهر لك رسالة تخبرك بنجاح الاتصال بقاعدة البيانات الآن اضغط على OK شاهد الصورة:

160489309.jpg

7- الآن اضغط على التالي بعدها ستظهر لك رسالة تقول لك إذا كنت تريد حفظ نسخة من قاعدة البيانات مع ملفات مشروعك هذا الخيار يفيد في حال كنت تريد توزيع برنامجك على أجهزة أخرى اختر نعم شاهد الصورة التالية :

692698086.jpg

8-الآن في النافذة التي تليها اضغط على التالي بعدها ستظهر لك نافذة ستعرض لك الجداول الموجودة في قاعدة البيانات وتستطيع منها اختيار الجداول التي تريد أن تتعامل معها أو تختار كل الجداول الموجودة إذا أردت وذلك بتحديد علامة الصح عليها اختر الجداول التي تريدها ثم اضغط إنهاء للمتابعة شاهد الصورة التالية :

959066079.jpg

الآن انتهينا من الاتصال بقاعدة البيانات الآن اذهب إلى الإطار DataSources وشاهد جداول قاعدة البيانات التي اخترتها كيف نزلت داخله ولاحظ الحقول التابعة للجداول قم بسحبها على النموذج شاهد الصورة التالية :

906350870.jpg

بعد سحبها على النموذج سيتم تلقائيا توليد مربعات نص وأدوات عنوان وشريط أدوات لعرض البيانات يحتوي شريط الأدوات على أزرار التالي والسابق والسجل الأول والأخير وزر إضافة وزر حذف وزر حفظ شاهد الصورة التالية :

343766149.jpg

الآن انتهينا من شرح الطريقة الأولى لربط قواعد البيانات وهي عن طريق الإطار DataSources

وقد لا حظت سهولة هذه الطريقة فقد قمنا بربط قاعدة البيانات وعرض البيانات التي داخلها بعدة خطوات بسيطة وبدون استخدام أي كود برمجي .


ثانيا: ربط قاعدة بيانات أكسس عن طريق الأدوات :وسنستخدم في هذه الطريقة مجموعة من الأدوات الموجودة ضمن دوت نت فروم وورك والتي تتعامل مع قواعد البيانات وهي موجودة ضمن شريط الأدوات ستقوم بإضافتها على النموذج ثم استخدامها لربط قاعدة البيانات سأشرح عمل هذه الأدوات

شاهد الصورة التالية:

871819272.jpg

الأداة OleDbConnection : ويتم الاتصال بقاعدة البيانات عن طريق هذه الأداة أي أن هذه الأداة أساسية في عملية الاتصال عندما تضيف هذه الأداة من خلالها تحدد مسار قاعدة البيانات ونوعها كما سنشرح لاحقا.


الأداة OleDbDataAdapter :هذه الأداة يطلق عليها اسم ملائم البيانات وفائدتها هي عندما نتصل بقاعدة البيانات عن طريق الأداة OleDbConnection فيأتي دورها هنا فمن خلالها نقوم بإظهار الجداول الموجودة داخل قاعدة البيانات كي نتمكن من التعامل معها .


الأداة OleDbCommand : وهذه الأداة يطلق عليها اسم قارئ البيانات وفائدتها مثل الأداة السابقة تماما.


الأداة BindingNavigator : وهذه الأداة يطلق عليها اسم ملاح البيانات فائدتها بأنها تستخدم للتنقل بين السجلات السابق والتالي والسجل الأخير والأول كما يوجد فيها زر إضافة سجل جديد وحذف سجل وحفظ .


الأداة DataGrid :وهذه الأداة لعرض جداول البيانات كاملة .


سأقوم الآن بتطبيق مثال حول طريقة إنشاء اتصال بقاعدة بيانات بواسطة الأدوات السابق ذكرها :


مثال على ما سبق:


أولا:افتح فيجوال ستيديو وقم باختيار مشروع جديد من نوع WindowsApplication وستفتح لك بيئة التطوير نافذة جديدة اذهب إلى شريط الأدوات وستجد تحت الكلمة DATA كل الأدوات التي تتعامل مع قواعد البيانات اختر الأداة OleDbConnection ثم أضفها على النموذج ومن الخاصية

ConnectionString التابعة للأداة OleDbConnection اختر New Connection شاهد الصورة التالية :

383680907.jpg

الآن ستظهر لك النافذة AddConnection اضغط على الزر Change لاختيار نوع قاعدة البيانات وستختار النوع مايكروسوفت أكسس واضغط على الزر Browse لاختيار قاعدة البيانات التي تريد الاتصال بها وبعدها اضغط على الزر Test Connection لتجربة الاتصال بقاعدة البيانات إذا كان الاتصال صحيحا وبدون مشاكل فستظهر رسالة تخبرك بذلك وبعدها اضغط على Ok للمتابعة شاهد الصورة التالية:

935236643.jpg

الآن لقد تم الاتصال بقاعدة البيانات بنجاح لكن لا نستطيع الوصول إلى جداول قاعدة البيانات لأنه يجب أن نقوم بتهيئة هذه الجداول وإظهارها ولعمل ذلك سنستخدم أداة ملائم البيانات والآن من شريط الأدوات قم باختيار الأداة OleDbAdapter وأضفها على النموذج وبعد إضافتها سيفتح تلقائيا معالج الخيارات الخاص بها اضغط على زر New Connection واختر اتصال قاعدة البيانات الذي انشأناه سابقا ثم اضغط التالي للمتابعة شاهد الصورة التالية :

731441541.jpg


الآن في النافذة التي تليها أيضا اضغط على التالي ثم ستظهر نافذة تستطيع من خلالها إظهار جداول قاعدة البيانات ولعمل ذلك قم بكتابة الاستعلام التالي داخل المستطيل الأبيض :

كود:
Select ID,NAME,JOB,BirthDay From BAYANAT

BAYANAT هو اسم الجدول الذي سنظهره و ID,,NAME,,JOB,,BirthDay هي أسماء الحقول التابعة له ولإظهار هذا الجدول قمنا باستخدام الاستعلام SELECT .


الآن اضغط على الزر Query Builder للتأكد من أن جملة الاستعلام صحيحة إذا كانت صحيحة فستظهر نافذة سترى فيها الجدول وحقوله قد ظهروا شاهد الصور التالية :

529345353.jpg


483562637.jpg

الآن اضغط على التالي للمتابعة وبعدها ستظهر لك نافذة تخبرك بنجاح العملية وبأنه تم تهيئة الجدول السابق ذكره BAYANAT وتخبرك أيضا بأنك تستطيع استخدام أوامر الاستعلام على هذا الجدول وهي Insert,,Delete,,Updata,,Select الآن اضغط على إنهاء .


الآن من القائمة DATA اختر الاختيار Generate DataSet بعدها سيظهر مربع حوار يحتوي على الجداول التي قمنا بتهيئتها سابقا باستخدام الأداة OleDbAdapter قم باختيار الجدول الذي تريد العمل عليه ونحن قمنا بتهيئة الجدول BAYANAT فقط هذا يعني انه سيكون اختيارنا الوحيد قم بتحديده ثم اضغط على OK وعندها سيتم إضافة الأداة DataSet إلى مشروعك تلقائيا شاهد الصورة التالية :

838839644.jpg

الآن قم بإضافة أربع مربعات نص TextBox وأربع أدوات تسمية Label وارسمها على النموذج وعدل خصائصها لتصبح على هذا الشكل :

890929383.jpg

سنستخدم مربعات النص لعرض بيانات الجدول BAYANAT كل مربع نص سيعرض بيانات حقل من الحقول سأقوم بربط مربع النص الأول مع الحقل ID افعل مايلي :


انقر على مربع النص الأول ومن نافذة الخصائص ستجد الخاصية الفرعية Text التابعة للخاصية

DataBindings قم بجعلها كما في الصورة تماما

306152298.jpg

قم بتكرار نفس العملية مع جميع مربعات النصوص لربطها بباقي الحقول .


الآن ادخل الكود التالي في الحدث Load التابع للفورم أو النموذج

كود:
Me.OleDbDataAdapter1.Fill(Me.DataSet11)

شرح الكود:وهذا الكود مهمته هي تحميل بيانات الجدول BAYANAT ليتم عرضها في مربعات النصوص


الآن قم بتجربة البرنامج ستجد بأن البيانات ظهرت داخل الحقول .


سنقوم بإضافة زرين على النموذج الأول Next والثاني Prv مهمتهما هي التنقل بين سجلات الجدول الزر الأول للانتقال إلى السجل التالي والزر الثاني للانتقال إلى السجل السابق وسنضيف الأداة DataGrid وفائدتها هي أنها تقوم بعرض جدول البيانات كاملا بكافة حقوله وسجلاته وصفوفه وأعمدته .


بعد أن تضيف الزرين وترسمهم على النموذج في حدث النقر للزر Next ادخل الكود التالي :


كود:
Me.BindingContext(Me.DataSet11, "BAYANAT").Position += 1

ومهمة هذا الكود هي الانتقال خطوة واحدة فقط إلى السجل التالي


وفي حدث النقر للزر Prv ادخل الكود التالي :

كود:
Me.BindingContext(Me.DataSet11, "BAYANAT").Position -= 1

مهمة هذا الكود إعادة السجل إلى الوراء خطوة واحدة يعني إلى السجل السابق


الآن قم بإضافة الأداة DataGrid من شريط الأدوات وارسمها على النموذج بشكل مناسب وبعد ذلك لكي يتم عرض الجدول BAYANAT داخلها يجب أن نقوم بربطها بقاعدة البيانات ويتم ذلك عن طريق الخاصية DataSource شاهد الصور القادمة :

613670973.jpg


760890122.jpg

قم بإضافة زر ثالث على النموذج وسميه Save وهذا الزر سيكون لحفظ البيانات الجديدة التي سندخلها على الجدول وفي حدث النقر التابع له ادخل الكود التالي :

كود:
Me.OleDbDataAdapter1.Update(Me.DataSet11)

ووظيفة هذا الكود هي لحفظ البيانات الجديدة التي يتم إدخالها على الجدول.

الآن قم بتجربة المثال وشاهد الصورة النهائية للمثال بعد كل شيء


286731823.jpg


نهاية الجزء الأول ربط قاعدة بيانات أكسس مع فيجوال بيسك دوت نت

يتبع..........................في المرة القادمة

2 - عرض بيانات شخص معين من الجدول الثاني بعد تحديد رقمه بالجدول الأول باستخدام DataGrid
 

المواضيع المشابهة


رد: دورة في درس كامل عن شرح أساسيات برمجة قواعد البيانات في فيجوال بيسك دوت نت


الجزء الثاني –

عرض بيانات شخص معين من الجدول الثاني بعد تحديد رقمه بالجدول الأول باستخدام الأداة DataGrid

ولشرح هذا الأمر سيكون بين يدينا مثال سنحتاج فيه المتطلبات التالية أداة DataGrid وأداة ComboBox وأداة Label وأداة OleDbConnection وأداتان OleDbAdapter .

في مثالنا:عندما نختار رقم الشخص من الأداة ComboBox فسيعرض اسم الشخص بالأداة Label وسيعرض طوله ووزنه داخل الأداة DataGrid


الجدول الأول اسمه BAYANAT وفيه معلومات عن اسم الشخص ورقمه وعمله أما الجدول الثاني اسمه PersInfo وفيه معلومات عن طول ووزن الشخص وعمره .

1- OleDbConnection:للاتصال بقاعدة البيانات كما شرحنا سابقا.
2- OleDbAdapter عدد 2:وهي لتهيئة جدول قاعدة البيانات وهنا سنحتاج لاثنتين لأننا نريد تهيئة جدولين من قاعدة البيانات الأولى سنهيئ فيها الجدول BAYANAT والثانية سنهيئ فيها الجدول PersInfo .
3- ComboBox:وسيتم إضافة أرقام الأشخاص من الجدول الأول بداخلها لنختار منها لاحقا .
4- Label:وسيظهر فيها اسم الشخص الذي اخترنا رقمه من قائمة أرقام الأداة ComboBox .
5- DataGrid:وسيظهر فيها بيانات الشخص الذي اخترنا رقمه لكن البيانات ستكون من الجدول الثاني يعني اسم الشخص ورقمه سيكونان من الجدول الأول وباقي البيانات ستكون من الجدول الثاني .

التطبيق العملي للمثال:
بعد أن تفتح فيجوال ستديو قم باختيار مشروع جديد من نوع WindowsApplication
قم بتسميته MY DATA BASE 10000.

قم بإضافة الأدوات السابق ذكرها إلى النموذج وعدل خصائصها لتصير بالشكل المناسب وسيكون النموذج بعد إضافة الأدوات على الشكل التالي :

932160839.jpg

الآن قم بالاتصال بقاعدة البيانات باستخدام الأداة OleDbConnection ثم قم بتهيئة الجدول الأول الذي هو BAYANAT باستخدام الأداة OleDbDataAdapter الأولى ادخل له عبارة الاستعلام التالية:

كود:
SELECT ID,NAME,JOB,BIRTHDAY FROM BAYANAT

وقم بتهيئة الجدول الثاني الذي هو PersInfo باستخدام الأداة OleDbDataAdapter الثانية وادخل له عبارة الاستعلام التالية :

كود:
SELECT H,W FROM PersInfo

H:هو حقل الطول التابع للجدول PersInfo
W:هو حقل الوزن التابع للجدول PersInfo


الآن من القائمة Data اختر الأمر Generate DataSet سيفتح مربع حوار فيه الجدولين BAYANAT و PersInfo قم باختيارهما شاهد الصورة القادمة :

707346050.jpg

الآن قم بربط الأداة ComboBox مع الجدول الأول BAYANAT عن طريق الخاصية DataSource شاهد الصورة القادمة :

473696398.jpg

الآن قم بضبط الخاصية DisplayMember للأداة ComboBox وهذا لربطها بالحقل ID بعد أن ربطناها بالجدول الأول شاهد الصورة التالية:

714556872.jpg

الآن يجب أن نربط الأداة Label بالحقل NAME التابع للجدول الأول وذلك عن طريق الخاصية
Text الفرعية التابعة للخاصية DataBindings للأداة Label .

الآن في الحدث Load للنموذج قم بإدخال الكود التالي :

كود:
Me.OleDbDataAdapter1.Fill(Me.DataSet11)

وهذا الكود لتحميل بيانات الجدول الأول عند تشغيل البرنامج .
الآن في الحدث SelectedIndexChanged التابع للأداة ComboBox وهو حدث الاختيار من القائمة يعني عندما تختار من القائمة يحدث هذا الحدث ويكون هذا الحدث على الشكل التالي :

كود:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged End Sub

ادخل في هذا الحدث الكود التالي :

كود:
On Error Resume Next Dim IdValue As Integer IdValue = CInt(Me.ComboBox1.Text) Me.BindingContext(DataSet11, "BAYANAT").Position = IdValue - 1 Dim ds As New DataSet Dim Sql As String Sql = "Select H,W From PersInfo Where iD = " & IdValue Me.OleDbDataAdapter2.SelectCommand.CommandText = Sql ds.Clear() Me.OleDbDataAdapter2.Fill(ds, "PersInfo") Me.DataGrid1.DataSource = ds.Tables("PersInfo")

شرح الكود :
السطر الأول:جملة تجنب الأخطاء
السطر الثاني :تعريف المتغير IdValue من نوع Integer
السطر الثالث:تخزين القيمة التي يختارها المستخدم من الأداة ComboBox في المتغير IdValue
السطر الرابع:استخدام المتغير IdValue للانتقال ضمن مجموعة السجلات للوصول للاسم المفروض عرضه ضمن الأداة Label حيث أن المستخدم كل ما انتقى رقما من القائمة سيظهر الاسم المقابل لهذا الرقم على اللصاقة .
السطر الخامس:تعريف غرض Ds من نوع DataSet
السطر السادس :تعريف المتغير Sql من نوع String
السطر السابع:قمنا بتخزين عبارة استعلام تحديد ضمن المتغير Sql وعبارة الاستعلام هذه كتبناها من اجل الحصول على طول ووزن الشخص بعد تحديد رقم Id الخاص به من المتغير IdValue .
السطر الثامن:نقوم بإسناد عبارة الاستعلام للخاصية CommandText
السطر التاسع:تفريغ مجموعة البيانات Ds وذلك منعا لتراكم البيانات فيها .
السطر العاشر:إظهار بيانات الجدول الثاني وذلك باستدعاء الطريقة Fill
السطر الحادي عشر :ربط الأداة DataGrid بالجدول الثاني PersInfo عن طريق الخاصية DataSource للأداة DataGrid .

الآن جرب البرنامج ولاحظ كيف عندما تختار أي رقم من قائمة الأرقام للأداة ComboBox سيتم عرض اسم صاحب هذا الرقم ضمن الأداة Label وسيتم عرض وزنه وطوله ضمن الأداة Datagrid شاهد صورة البرنامج بعد تجربته:

536703831.jpg

ا
لخاصيتين DisPlayMember وValueMember :

لاحظنا في المثال السابق أننا عندما نختار رقم الشخص من القائمة فيظهر اسمه ضمن الأداة ليبيل ويظهر طوله ووزنه ضمن الأداة داتا غريد ولكن من الصعب على المستخدم التعامل مع الأرقام أو تذكرها لذلك من الأسهل بالنسبة له لوكان بإمكانه التعامل مع الاسم وعرض طول ووزن الشخص من خلال اختيار اسمه وليس رقمه في الواقع بإمكانه فعل ذلك ولكننا اخترنا رقم الشخص كونه مفتاح أساسي نعتمد عليه لتحديد الطول والوزن التابعين له أما اسم المستخدم لا نستطيع الاعتماد عليه بسبب احتمال تكرار الأسماء ولكن يمكننا القيام بخدعة بسيطة نتخلص من خلالها من التعامل مع رقم الشخص بشكل ظاهر وذلك من خلال الخاصيتين DisPlayMember و ValueMember حيث نربط الخاصية الأولى مع الحقل المراد إظهاره للمستخدم وهو هنا في مثالنا الحقل NAME والخاصية الثانية سنربطها مع الحقل الذي نحتاج إلى قيمته فعليا وهو هنا حقل الأرقام ID سأوضح ذلك من خلال مثالنا السابق :

أولا:لنعد إلى الكود الذي أضفناه للأداة ComboBox وهو الكود التالي :

كود:
On Error Resume Next Dim IdValue As Integer IdValue = CInt(Me.ComboBox1.Text) Me.BindingContext(DataSet11, "BAYANAT").Position = IdValue - 1 Dim ds As New DataSet Dim Sql As String Sql = "Select H,W From PersInfo Where iD = " & IdValue Me.OleDbDataAdapter2.SelectCommand.CommandText = Sql ds.Clear() Me.OleDbDataAdapter2.Fill(ds, "PersInfo") Me.DataGrid1.DataSource = ds.Tables("PersInfo")

قم بتعديل السطر الثالث :

كود:
IdValue = CInt(Me.ComboBox1.Text)

وغيره ليصبح على الشكل التالي :

كود:
IdValue = CInt(Me.ComboBox1.SelectedValue)

وسبب التغيير هو أن الخاصية SelectedValue تعيد القيمة المرتبطة مع الخاصية ValueMember عند اختيار عنصر من القائمة .

الآن اضبط الخاصية DisPlayMemberللأداة ComboBox واربطها مع الحقل NAME التابع للجدول BAYANAT

واضبط الخاصية ValueMember للأداة ComboBox واربطها مع الحقل ID التابع للجدول الأول BAYANAT

الآن جرب البرنامج ولاحظ كيف انه سيتم عرض طول ووزن الشخص من خلال اختيار اسمه من القائمة هذه المرة وليس رقمه شاهد هذه الصورة :

291560988.jpg


نهاية الجزء الثاني
عرض بيانات شخص معين من الجدول الثاني بعد تحديد رقمه بالجدول الأول باستخدام الأداة DataGrid

يتبع في المرة القادمة

عرض بيانات أكثر من جدول داخل أداة Data Grid واحدة
 


رد: دورة في درس كامل عن شرح أساسيات برمجة قواعد البيانات في فيجوال بيسك دوت نت


الجزء الثالث –

عرض بيانات أكثر من جدول داخل أداة Data Grid واحدة

إذا كانت البيانات في جدولين مرتبطة ببعضها يعني إذا كان بالجدول الأول رقم الشخص واسمه وعمله وبالجدول الثاني طوله ووزنه وعمره عندها سنحتاج نحن لعرض بيانات الجدولين مع بعضهما كون بياناتهما مرتبطة ببعضها ونحن لدينا الجدولين BAYANAT و PersInfo بالجدول الأول أرقام الأشخاص وأسمائهم وأعمالهم وفي الثاني طولهم ووزنهم وعمرهم سنقوم بعرض بيانات الجدولين سويا في أداة DataGrid واحدة فقط ولعمل هذا سنطبق هذا المثال :

التطبيق العملي :


أولا:بعد أن تفتح فيجوال ستيديو اختر مشروع جديد من نوع WindowsApplication

ثانيا :قم بإضافة الأدوات التالية على النموذج :
1- أداة OleDbConnection وذلك للاتصال بقاعدة البيانات كما شرحنا بالأجزاء الماضية .
2- أداة DataGrid وذلك لعرض بيانات الجدولين داخلها .
أكيد لاحظتم بأننا لم نضف أي أداة OleDbDataAdapter والتي كما شرحنا سابقا نستخدمها لتهيئة جداول قاعدة البيانات والسبب في ذلك هو أننا سنقوم بإضافتها وتهيئة الجداول داخلها برمجيا عن طريق الكود هذه المرة وليس التصميم.

بعد إضافتك للأداتين السابق ذكرهما يجب أن يصير شكل النموذج هكذا :

850629886.jpg

ثالثا:قم بالاتصال بقاعدة البيانات باستخدام الأداة OleDbConnection عن طريق الخاصية
ConnectionString ومنها NewConnection شرحنا هذا في الجزء الأول .

رابعا :اذهب إلى نافذة الاكواد البرمجية وفي الحدث Load للنموذج ادخل الكود التالي :

كود:
Dim Select1, Select2, ConStr As String Dim Adapter1, Adapter2 As OleDb.OleDbDataAdapter Dim Ds As New DataSet Dim relation As Data.DataRelation ConStr = OleDbConnection1.ConnectionString Select1 = "Select ID,NAME,JOB,BirthDaY From BAYANAT" Select2 = "Select ID,H,W,Age From PersInfo" Adapter1 = New OleDb.OleDbDataAdapter(Select1, ConStr) Adapter2 = New OleDb.OleDbDataAdapter(Select2, ConStr) Adapter1.Fill(Ds, "BAYANAT") Adapter2.Fill(Ds, "PersInfo") relation = New Data.DataRelation("BAYANAT-PersInfo", Ds.Tables("BAYANAT").Columns("Id"), Ds.Tables("PersInfo").Columns("Id")) Ds.Relations.Add(relation) DataGrid1.DataSource = Ds.Tables("BAYANAT")

شرح الكود :
السطر الأول:قمنا بتعريف ثلاثة متغيرات من String وهم Select1 و Select2 و ConStr.
السطر الثاني:ذكرنا سابقا بأننا لم نضف أداتين OleDbDataAdapter عن طريق التصميم وقلنا أننا سننشئهما عن طريق الكود وهذا السطر لهذا الغاية حيث أنشأنا هنا الأداتين Adapter1 و Adapter2 من هذا النوع لنستخدمهما بتهيئة جدولي قاعدة البيانات .
السطر الثالث:تعريف الغرض DS من نوع الصف DataSet وفائدته هي انه بعد أن نقوم بتهيئة الجداول باستخدام OleDbDataAdapter هنا يأتي دوره فمن خلاله يتم عرض بيانات الجدولين .
السطر الرابع:تعريف الغرض Relation من نوع الصف Data.DataRelation وفائدته هي انه نستطيع من خلاله ربط الجدولين مع بعضهما ليظهرا سويا داخل الأداة DataGrid .
السطر الخامس:نقوم هنا بتخزين اتصال قاعدة البيانات داخل المتغيرConStr الذي عرفناه سابقا
السطرين السادس والسابع :نقوم بتخزين عبارتي استعلام اللتين سنستخدمهما في تهيئة جداول قاعدة البيانات داخل المتغيران Select1 و Select2 .
السطرين الثامن والتاسع:نقوم هنا بتهيئة جداول قاعدة البيانات عن طريق Adapter1 وAdapter2
ولتحقيق هذا الغرض نمرر إليهما اتصال قاعدة البيانات الذي خزناه داخل المتغير ConStr
ونمرر إليهما أيضا عبارتي الاستعلام اللتين قمنا بتخزينهما سابقا داخل المتغيرين Select1 وSelect2 .
السطرين العاشر والحادي عشر:بعد أن قمنا بتهيئة الجدولين باستخدام Adapter1 و Adapter2
في هذا السطر نقوم بإضافة محتويات الجدولين إلى الغرض Ds الذي وظيفته عرض محتوياتهما
وبعدها سيصير عندنا داخل الغرض Ds جدولين الأول BAYANAT والثاني PersInfo.
السطر الثاني عشر:بعد أن قمنا بإضافة محتويات الجدولين إلى الغرض Ds سنقوم بربطهما مع بعضهما عن طريق الغرض Relation أولا: سنختار اسم لعلاقة الجدولين مع بعضهما وسنمرره في الوسيط الأول واسم العلاقة سيكون BAYANAT-PersInfo في الوسيطين الثاني والثالث
سنقوم بربط الحقل ID بالجدول الأساسي BAYANAT مع الحقل ID بالجدول الابن PersInfo
السطر الأخير:سنجعل الجدول BAYANAT هو الجدول الأساسي الذي سيظهر داخل الأداة
DataGrid.

الآن انتهينا من مثالنا

خامسا:قم بتجربة البرنامج ولاحظ كيف سيتم عرض الجدولين داخل الأداة DataGrid شاهد الصور:

874023794.jpg


414559481.jpg


عرض البيانات باستخدام الأداة OleDbCommand والأداة ListView

في الأجزاء الماضية تعلمنا كيف نقوم بتهيئة جداول قواعد البيانات ليتم عرضها عن طريق الأداة
OleDbDataAdapter وتعلمنا كيف نقوم بعرض البيانات عن طريق الأداة DataGrid سنتعلم في هذا الشرح أسلوب جديد لعرض البيانات وهو عن طريق الأداة OleDbCommand وستكون هذه الأداة بديلة في هذا الشرح للأداة OleDbDataAdapter وسنتعلم أيضا في شرحنا هذا كيف نعرض البيانات داخل الأداة ListView وسأشرح هذه الأمور عن طريق تطبيق مثال .

المثال التطبيقي :


أولا:بعد أن تفتح فيجوال ستيديو قم باختيار مشروع جديد من نوع WindowsApplication

ثانيا :قم بإضافة الأدوات التالية :
1- أداة OleDbConnection للاتصال بقاعدة البيانات
2- أداة OleDbCommand لقراءة بيانات الجداول
3- أداة TextBox
4- أداة Label
5- أداة ListView

ارسمها على النموذج وغير خصائصها بالنسبة للأداة ListView اضبط الخاصية View لها على القيمة Details ثم اذهب إلى الخاصية Columns لإضافة أعمدة قم بإضافة أربعة أعمدة سمي الأول ID والثاني NAME والثالث JOB والرابع BirthDay شاهد الصورة التالية:

282197324.jpg

استخدم الأداة OleDbConnection للاتصال بقاعدة البيانات عن طريق الخاصية ConnectionString ومنها NewConnection كما شرحنا في الجزء الأول .


بالنسبة للأداة OleDbCommand سنستخدمها لقراءة البيانات من قاعدة البيانات وذلك من الخاصية Connection قم باختيار اتصال قاعدة البيانات الذي انشأ ناه عن طريق الأداة OleDbConnection الآن بعد أن ترسم كل الأدوات اللازمة على النموذج وتطبق كل الخطوات السابقة وتجري التغيرات اللازمة لخصائص الأدوات يجب أن يكون الشكل النهائي للنموذج هكذا شاهد الصورة:

970178390.jpg

ثالثا اذهب إلى نافذة الاكواد وفي الحدث KeyUp للأداة TextBox ادخل الكود التالي :

كود:
If e.KeyCode = Keys.Enter Then Me.OleDbConnection1.Open() Dim Str As String Str = "Select Id,NAME,JOB,BirthDay from BAYANAT Where ID =" & CInt(TextBox1.Text) Me.OleDbCommand1.CommandText = Str Dim reader As OleDb.OleDbDataReader Dim i As Integer reader = Me.OleDbCommand1.ExecuteReader ListView1.Items.Clear() ListView1.GridLines = True While reader.Read ListView1.Items.Add(CStr(reader.Item("ID"))) ListView1.Items(i).SubItems.Add(CStr(reader.Item("NAME"))) ListView1.Items(i).SubItems.Add(CStr(reader.Item("JOB"))) ListView1.Items(i).SubItems.Add(CStr(reader.Item("BirthDay"))) i += 1 End While Me.OleDbConnection1.Close() End If

شرح الكود : أولا بدأنا بجملة شرطية وهي انه إذا تم الضغط على الزر انتر فسيحدث ما يلي :
السطر الثاني :قمنا بفتح الاتصال مع قاعدة البيانات .
السطر الثالث:عرفنا متغير من نوع سلسلة نصية String
قمنا بتخزين عبارة استعلام داخل المتغير النصي Str وعبارة الاستعلام فائدتها تهيئة الجدول BAYANAT وحقوله حسب رقم ID الذي سيتم كتابته داخل TextBox .
السطر الرابع :تمرير عبارة الاستعلام التي كتبناها سابقا إلى الخاصية CommandText للأداة
OleDbCommand .
السطر الخامس :تعريف الغرض reader من نوع الصف OleDbDataReader .
السطر السادس :تعريف المتغير I من نوع Integer
السطر السابع :تنفيذ الطريقة ExecuteReader التابعة للأداة OleDbCommand .
السطر الثامن :مسح محتويات الأداة ListView.
السطر التاسع:لإظهار خطوط الجداول داخل الأداة ListView
السطور الحادي والثاني والثالث والرابع عشر:إظهار سجلات الجدول داخل الأداة ListView
حسب رقم ID الذي تكتبه داخل TextBox
السطر قبل الأخير : إغلاق الاتصال مع قاعدة البيانات

الآن انتهينا وأصبح المثال جاهز للتجربة جرب البرنامج واكتب رقما داخل TextBox ثم اضغط على انتر وشاهد كيف ستظهر بيانات صاحب هذا الرقم داخل الأداة ListView شاهد الصورة :

743060588.jpg

الفرق بين OleDataAdapter و OleDbCommand :

والفرق بينهما هو أن الأولى تستطيع من خلالها التنقل بين السجلات أمام وخلف أما الثانية لا تستطيع الانتقال خلفا وتعد OleDbCommand أسرع من OleDbDataAdapter عند استخدام عبارة استعلام عن طريق OleDbDataAdapter فإننا لا نحتاج لفتح الاتصال بقاعدة البيانات أما عند استخدام OleDbCommand سنحتاج لفتح الاتصال بقاعدة البيانات كما فعلنا بمثالنا .

نهاية الجزء الثالث

عرض بيانات أكثر من جدول داخل أداة Data Grid واحدة

يتبع في المرة القادمة

كيف نستخدم عبارات الاستعلام SQL
 


رد: دورة في درس كامل عن شرح أساسيات برمجة قواعد البيانات في فيجوال بيسك دوت نت

)=..بارك الله فيك ي صاحبي×
صراحه ابدعت,,×
 


رد: دورة في درس كامل عن شرح أساسيات برمجة قواعد البيانات في فيجوال بيسك دوت نت

وربي كنت ادور مثل ذا الدرس وان شالله استفيد منه
مشكووووور جاري حفظ الصفحه ^^
لي رجعه
همسه:لو كان علي فيجوال دوت نت افضل
 


رد: دورة في درس كامل عن شرح أساسيات برمجة قواعد البيانات في فيجوال بيسك دوت نت

يعطيك العافية
شرح جميل
جاري تقييمك
لا تنسى الحقوق :)
 


رد: دورة في درس كامل عن شرح أساسيات برمجة قواعد البيانات في فيجوال بيسك دوت نت

موضوع متعوب عليه .~

يعطيكي الف عافيه .~

تقبلي مروري .~َ
 

عودة
أعلى