منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : الاتصال بقاعدة بيانات متعددة الجداول
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4 5
(08-08-15, 04:01 PM)khodor1985 كتب : [ -> ]عذرا أخي العزيز سعود أتمنى أن تسمحو لي بالمشاركة

وليه الاستئذان اخي  ...  الحلول كثيرة جدا فقد توفق انت بحل يرضي السائل.
بارك الله فيك اكتب ماتراه بدون استئذان فهذا يسعدني قبل السائل
أرى أن قاعدة البيانات تحتوي على أكثر من جدول (3 جداول) ، والأخ الكريم يعتمد طريقة الإتصال اليدوي مع قاعدة البيانات وهذا بطبيعة الحال يستدعي كتابة الكثير من الأكواد وخاصة الأكواد التي لها علاقة بجمل الإستعلام (للقراء فقط أو للتنفيذ) أو الجمل التي لها علاقة بجملة الإتصال وفتح الإتصال وإغلاق الإتصال إلى آخره ... ولنفترض أيضا أن الأخ الكريم يريد أن يضيف على المشروع جداول أخرى فهذا أيضا يستدعي مجهود أكبر.
فما رأيكم في إنشاء كلاس يتضمن عملية الإتصال مع قاعدة البيانات بالإضافة إلى جمل الإستعلام.
وشكرا

قبل البدء في تطبيق المشروع أحب أن أذكر أن الحديث يقول: الله الله في نظم أمركم" وأهم شيء في إنشاء أي مشروع مهما كان حجمه كبيرا أو صغيرا لا بد من تنظيم الملفات داخل المشروع لكي نتمكن من العودة إليها لأي سبب كان (تعديل - خطأ - تطوير) هذا من الأمور المهمة جدا.
أخي العزيز يرحمكم الله، هيا بنا نتعلم معاً....
أولا :
- قم بإنشاء مشروع جديد بالعنوان الذي وضعته أنت MultiColumns
- بطبيعة الحال عندما يفتح المشروع سترى أنه قد أنشأ في واجهة Solution Explorer نموذج بعنوان Form1، إعمل على حذف النموذج ثم قم بإضافة مجلدين الأول بعنوان Forms والثاني بعنوان CLS وهو اختصار لكلمة Class، وبالتالي سوف نضيف النماذج إلى المجلد Froms والكلاسس إلى المجلد CLS.
جميل...
- قم بإضافة كلاس إلى المشروع بعنوان DAL ثم ضع بداخله الأكواد التالية :
أولا سوف نقوم بكتابة الإجراء العام لعملية الإتصال والتي سوف تؤثر على المشروع بأكمله
PHP كود :
]Dim Con As OleDBConnection 
ثم ضع الكود التالي :
PHP كود :
ٍSub New()
Con = New OledbConnection("Set Connection String her"
ثم نقوم بإنشاء دالة جديدة تتضمن جملة الإستعلام Select:
كود :
Public Function SelectData(cmdtxt as string) as DataTable
Dim cmd as new oledbconnection()
with cmd
.CommandType = Commandtype.Text
.CommandText = cmdtxt
.Connection = con
end with
dim da as new oledbadapter(cmd)
dim dt as new DataTable
da.Fill(dt)
Return dt
End Function

ثم نقوم بإنشاء إجراء جديد أيضا له يتضمن الجمل التنفيذية (insert/Update/Delete)
كود :
Sub EditData(insertdata as string)
dim cmd as new oledbCommsnd()
with cmd
.Commandtype = CommandType.Text
.CommandText = insertdata
.Connection = con
End with
If (Con.State = ConnectionState.OPen Then Con.Close()
con.Open()
cmd.ExecuteNonQuery()
con.close()
End Sub
بعد ذلك إنشاء الله سوف ننتقل للتطبيق في المشروع بحسب قاعدة البيانات التي تفضلت بها
بسم الله الرحمن الرحيم
أولا سوف نتعامل مع الجدول الأول TBLchilddata ( الجدول يحتوي على 8 حقول)
جميل ....
- قم بإنشاء نموذج أو إضافة نموذج جديد بعنوان ChildData طبعا سيتم إضافته إلى المجلد Forms في Solution Explorer.
- قم بإضافة مربع نص عدد 5 ومربع تحرير وسرد combobox عدد 2 ، DatetimePicker عدد 1.
- قم بتسمية مربعات النصوص وأقصد هنا التسمية البرمجية
txtID / txtName / txtBlockID / txtDoorID / txtFamilyID
- قم بتسمية مربعات التحرير والسرد :
cboAddress / cboKind
- قم بتسمية DatetimePicker DatePK
ثم قم بإضافة 8 الأزرار التالية :
الأول جديد btnNew
الثاني تعديل btnModify
الثالث حفظ btnSave
الخامس السجل الأول btnFirst
السادس السجل السابق btnPevious
السابع السجل التالي btnNext
الثامن السجل الأخير btnLast
- الأكواد :
- قم بالإعلان عن المتغير التالي في أعلى صفحة الأكواد :
PHP كود :
Dim dt as dataTable = New DAL().SelectData("Select ID,Name,Birth,Address,block_ID,Door_ID,Family_ID,Kind From TBLchilddata"
ثم قم بإنشاء إجراء جديد بعنوان LoadChildData
PHP كود :
Sub LoadChildData()
txtID.DataBindings.Add("Text",dt,"ID")
txtname.DataBindings.Add("Text",dt,"name")
DatePK.DataBindings.Add("Text",dt,"birth")
cboAddress.DataBindings.Add("Text",dt,"address")
txtBlockID.DataBindings.Add("Text",dt,"block_id")
txtDoorID.DataBindings.Add("Text",dt,"door_id")
txtFamilyID.DataBindings.Add("Text",dt,"family_id")
cboKind.DataBindings.Add("Text",dt,"kind")
End Sub 

ثم نقوم بتنفيذ الإجراء LoadChildData من خلال وضعه في حدث Load للنموذج
وعند فتح الفورم سوف يقوم بتعبئة أدوات التحكم بالبيانات من قاعدة البيانات
إنشاء الله سنكمل مع الجداول المتبقية

بسم الله الرحمن الرحيم
التعامل مع الجدول TBLvaccine
- قم بإضافة DataGridView إلى نفس النموذج
- قم بإضافة 7 أعمدة إلى DataGridView وسمي الأعمدة ما شئت
- سوف نقوم الأن بإضافة البيانات إلى datagridview وربطها بالجدول الأول TBLchilddata وذلك من خلال جملة الإستعلام ركزمعي جيدا
- قم بإنشاء إجراء جديد بعنوان LoadVaccineData
PHP كود :
datagridview1.rows.clear()
dim dt as DataTable = new DAL().SelectData(String.Format("Select IDCH,BCG,hepB,opv,opv1,hib1,rota1 from TBLvaccine where IDCH='{0}'",txtID.Text))
For 
as integer dt.rows.count -1
datagridview1
.rows.add()
datagridview1(0,i).value dt.rows(i)(0).tostring()
datagridview1(1,i).value dt.rows(i)(1).tostring
datagridview1
(2,i).value dt.rows(i)(2).tostring
datagridview1
(3,i).value dt.rows(i)(3).tostring
datagridview1
(4,i).value dt.rows(i)(4).tostring
datagridview1
(5,i).value dt.rows(i)(5).tostring
datagridview1
(6,i).value dt.rows(i)(6).tostring
Next
dt
.dispose
dt 
nothing 
ثم نضيف الإجراء إلى الحدث load للنموذج
أخيرا قم بتنفيذ نفس الفكرة مع الجدول الثالث TBLlake
نكمل إنشاء الله مع الأزرار في المشاركة الجديدة
بارك الله فيك
بسم الله الرحمن الرحيم
الحمد لله رب العلمين
التعامل مع الأزرار
دعنا أولا نعالج مسألة الأزرار المتعلقة بالتنقل بين السجلات
سنعتمد الكلاس CurrencyManager من خلاله سوف نتنقل بين السجلات
جميل .... تابع الموضوع بسيط جداً

- أولا سوف نقوم نعلن عن متغير جديد في أعلى صفحة الأكواد لنفس النموذج
PHP كود :
Dim cm as CurrencyManager 

ثم نضيف قيمة المتغير إلى السطر الأخير في الإجراء LoadChildData على الشكل التالي :
PHP كود :
cm.position 0
LoadVaccineData
()
LoadChildData() 
الزر الأول وهو السجل الأول btnFirst:
PHP كود :
cm.position 0
LoadVaccineData
()
LoadChildData() 

الزر الثاني وهو السجل السابق btnPrevios :
PHP كود :
cm.position -= 1
LoadChildData
()
LoadVaccineData() 

الزر الثالث وهو السجل التالي btnNext :
PHP كود :
cm.position += 1
LoadChildData
()
LoadVaccineData() 

الزر الرابع وهو السجل الأخير btnLast:
PHP كود :
cmd.position dt.rows.count -1
LoadChildData
()
LoadVaccineData() 

نكمل إنشاء الله مع باقي الأزرار في المشاركة المقبلة
اخي الكريم khodor1985
جزاك الله عنا كل خير
اقترح بتجميع مشاركاتك ووضعها بموضوع واحد مستقل ويكون شيء رائع لو تم ادراج مثال.
بارك لله فيك اخي ومشكور جدا  khodor198 وبكل ا خوة  ولا تحتاج استئذان
لكن اخي الجدولين  TBLchilddata , tblvaccine يجب ان يظهرا في الواجهة على شكل  تكست او تايم بيكر لان فيهل تواريخ وخاصة الجدول اثاني جدول اللقاحات
اما الجدول الثالث فهو لارجاع قيمة لمعرفة الطفل متسرب عناللقاح او لا
انا عامل علاقات للجداول الثلاثة
//// من بعد اذنك استاذ  هل يمكن  ان اخذ مقترح الاستاذ سعود واعملة برنامح واعملة مشاركة اذا امكن

السلام عليكم اخواني الاعزاء انا احب اشكركم جميعا
واحب ان اوجه التحية الى استاذنا ومعلمنا الاستاذ العزيز ابو ايهاب لان له الفضل الاول علي لدخولي عالم البرمجة
وبصراحة
ان ابو ايهاب دخل عندي وعمله لنكيوو لكن انت ما فهمت منه شيئ والاكواد مختصرة جدا
لا بأس أخي العزيز ولا يحتاج اﻷمر إلى سؤال واﻷخ سعود معلمنا وأستاذنا
عذرا مرة أخرى
وسوف المشاركات كما طلب اﻷخ سعود في مشاركة واحدة
بخدمتكم
استاذ khodor1985 شفت العلاقات بين الجداول والواجهة
نعم الصحيح بارك الله فيك
المهم أنك عالجت الفكر
بالتوفيق أخي العزيز
وإذا احتجت شيئا فأنا بخدمتك
الصفحات : 1 2 3 4 5