منتديات فينكس برو  للبرامج / FENIXPRO FORUM FOR PROGRAME  

الانتقال للخلف  
الملاحظات
الفيجوال بيسك Visual Basic
للغة الفيجوال بيسك Visual Basic


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

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

اضافة موضوع جديد إضافة رد
نسخ الرابط
نسخ للمنتديات
 
أدوات الموضوع انواع عرض الموضوع
رقم المشاركة : ( 1 )
موفومو غير متواجد حالياً
الصورة الرمزية موفومو
 
موفومو
الأوسمـة
بيانات الإتصال
آخر المواضيع
 
رقم العضوية : 792
تاريخ التسجيل : May 2012
الدولة :
مكان الإقامة : ســــــــــــ(دمشق)ــــوريا
عدد المشاركات : 235 [+]
آخر تواجد : [+]
عدد النقاط : 35
قوة الترشيح : موفومو is on a distinguished road


كُتب : [ 26-05-2012 - 12:23 AM ]
 

 

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

قواعد البيانات 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
إذا كان مخفيا شاهد الصورة التالية:


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


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


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


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


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


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


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


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


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

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


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

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

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

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

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

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


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

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


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


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



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

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

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

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




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

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


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


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

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


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

الآن ادخل الكود التالي في الحدث 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 شاهد الصور القادمة :




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

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

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

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



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

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

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

المصدر: منتديات فينكس برو للبرامج الكاملة منتديات فينكس برو للبرامج / FENIXPRO FORUM FOR PROGRAME - من قسم: الفيجوال بيسك Visual Basic


avp Hshsdhj fvl[m r,hu] hgfdhkhj td td[,hg fds; ],j kj

 
ملاحظة : يمكن نقل الموضوع بشرط ذكر المصدر


التعديل الأخير تم بواسطة موفومو ; 02-06-2012 الساعة 12:40 AM
رد مع اقتباس

رد مع اقتباس

المشاكـس5550 غير متواجد حالياً
 رقم المشاركة : ( 2 )
المشاكـس5550
رقم العضوية : 451
تاريخ التسجيل : Mar 2012
الدولة : Intel i10
مكان الإقامة : K.S.A
عدد المشاركات : 1,028 [+]
آخر تواجد : [+]
عدد النقاط : 55
قوة الترشيح : المشاكـس5550 will become famous soon enough
الأوسمـة
بيانات الإتصال
آخر المواضيع

كُتب : [ 26-05-2012 - 03:19 PM ]

موضوووووووع اكثر من رااااائع
مشكور



رد مع اقتباس

المشاكـس5550 غير متواجد حالياً
 رقم المشاركة : ( 3 )
المشاكـس5550
رقم العضوية : 451
تاريخ التسجيل : Mar 2012
الدولة : Intel i10
مكان الإقامة : K.S.A
عدد المشاركات : 1,028 [+]
آخر تواجد : [+]
عدد النقاط : 55
قوة الترشيح : المشاكـس5550 will become famous soon enough
الأوسمـة
بيانات الإتصال
آخر المواضيع

كُتب : [ 26-05-2012 - 03:22 PM ]

والك 5/5 نجمات كرمال عيونك
... بصراحة عجبتني قاعدة البيانات ههههه

مشكوووووور


رد مع اقتباس

موفومو غير متواجد حالياً
 رقم المشاركة : ( 4 )
موفومو
رقم العضوية : 792
تاريخ التسجيل : May 2012
الدولة : ســــــــــــ(دمشق)ــــوريا
مكان الإقامة : سوريا
عدد المشاركات : 235 [+]
آخر تواجد : [+]
عدد النقاط : 35
قوة الترشيح : موفومو is on a distinguished road
الأوسمـة
بيانات الإتصال
آخر المواضيع

كُتب : [ 02-06-2012 - 12:58 AM ]

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

عرض بيانات شخص معين من الجدول الثاني بعد تحديد رقمه بالجدول الأول باستخدام الأداة 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.

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


الآن قم بالاتصال بقاعدة البيانات باستخدام الأداة 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 قم باختيارهما شاهد الصورة القادمة :


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


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


الآن يجب أن نربط الأداة 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 شاهد صورة البرنامج بعد تجربته:


ا
لخاصيتين 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

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



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

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

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


رد مع اقتباس

موفومو غير متواجد حالياً
 رقم المشاركة : ( 5 )
موفومو
رقم العضوية : 792
تاريخ التسجيل : May 2012
الدولة : ســــــــــــ(دمشق)ــــوريا
مكان الإقامة : سوريا
عدد المشاركات : 235 [+]
آخر تواجد : [+]
عدد النقاط : 35
قوة الترشيح : موفومو is on a distinguished road
الأوسمـة
بيانات الإتصال
آخر المواضيع

كُتب : [ 02-06-2012 - 01:04 AM ]

المشاركة الأصلية كتبت بواسطة المشاكـس5550 مشاهدة المشاركة
والك 5/5 نجمات كرمال عيونك
... بصراحة عجبتني قاعدة البيانات ههههه

مشكوووووور
[center][b][size="5"]اهلا بك اخي ناجي


التعديل الأخير تم بواسطة موفومو ; 03-06-2012 الساعة 01:41 PM

رد مع اقتباس

موفومو غير متواجد حالياً
 رقم المشاركة : ( 6 )
موفومو
رقم العضوية : 792
تاريخ التسجيل : May 2012
الدولة : ســــــــــــ(دمشق)ــــوريا
مكان الإقامة : سوريا
عدد المشاركات : 235 [+]
آخر تواجد : [+]
عدد النقاط : 35
قوة الترشيح : موفومو is on a distinguished road
الأوسمـة
بيانات الإتصال
آخر المواضيع

كُتب : [ 09-06-2012 - 02:59 PM ]

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

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

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

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


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

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

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


ثالثا:قم بالاتصال بقاعدة البيانات باستخدام الأداة 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 شاهد الصور:





عرض البيانات باستخدام الأداة 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 شاهد الصورة التالية:


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


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


ثالثا اذهب إلى نافذة الاكواد وفي الحدث 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 شاهد الصورة :


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

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

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

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

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

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


رد مع اقتباس

اضافة موضوع جديد إضافة رد

مواقع النشر


يتصفح الموضوع حالياً : 1 (0 عضو و 1 زائر)
 
أدوات الموضوع
انواع عرض الموضوع

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى الردود آخر مشاركة
تعلم كيف تبرمج أدوات Windows Control Library في فيجوال بيسيك دوت نت موفومو الفيجوال بيسك Visual Basic 9 20-11-2013 10:54 PM
مشاريع Windows Service في فيجوال بيسيك دوت نت((مبادئ برمجة خدمات ويندوز)) موفومو الفيجوال بيسك Visual Basic 8 08-05-2012 01:58 AM

2009-2010 Powered by vBulletin
اتقى الله فيما تكتبه وتنشره الادارة غير مسؤولة عن المنشورات