تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تعلم كيف تربط برنامجك بالاكسس باستخدام مكتية Ado مع العمليات الاساسية
#1






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


** يتم التطبيق فى درسنا هذا على دليل هاتف مصغر لتسهيل عمليه الشرح والفهم **


نبدأ الشرح


أنشئ قاعدة بيانات اكسس وسميها Telephone وإنشئ ايضاً جدول وسميه Tabel1 ثم اضف ثلاث حقول :
رقمى = Num
نصى = Nme
رقمى =
Phone





متطلبات البرنامج :
(3 ليبل) *(3 تكست)*(4 كوماند)*(1 اداة عرض MSFlexGrid)
الادوات الثلاث الاولى موجودة لاضافة اداة العرض MSFlexGrid اتبع الاتى :

References --->> Compontes --->> Microsift FlixGrid Control 6.0






*
تم تقسيم الشرح على ثلاثة اجزاء :

الجزء الاول : الفورم





ارسم الادوات على الفورم وغير التسمية كالاتى :
الرقم = Label1
الإسم = Label2
رقم الهاتف = Label3

♦ ♦ ♦ ♦ ♦ ♦
إضافة = Command1
حفظ = Command2
تعديل = Command3
حذف = Command4
خروج = Command5

من خصائص الــ MSFlexGrid إجعل الخصاية Right ToLeft = True
ليكون تصميم النموزج او الفورم على هذا الشكل :







**
او إختر مايناسبك فى تصميم النموزج **

الجزء الثانى : أداة ربط قاعدة البيانات Ado





نضيف اداة الاتصال بقاعدة البيانات :
من الخصائص اذهب فى الاعلى الى قائمة Project ومن ثم اختر References وابحث عن Microsoft ActiveX Data Obiects 2.8 Libray او اى اصدارة من الاصدارات الخمسة الاخرى







الجزء الثالث: الاكواد

أنشئ ثلاث متغيرات فى قسم التصريحات General Declarations :


كود :
Dim db As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
السطر الاول : للاتصال بقاعدة البيانات
السطر الثانى : للاتصال بالجدوال فى قاعدة البياناتالسطر الثالث : تعريف متغير منوع String
فى حدث الــ Form_Load :

كود :
If db.State = 1 Then db.Close
   db.CursorLocation = adUseClient
   db.Provider = "Microsoft.Jet.OLEDB.4.0;"
   db.Open App.Path & "\Telephone.mdb"
   Call Filldata
السطر الاول : اذا كانت قاعدة البيانات مفتوحة يتم إغلاقها

السطر الثانى : هنا التعامل مع جهاز واحد فقط

السطر الثالث : هو المزود الخاص بقواعد بيانات من نوع اكسس

السطر الرابع : هنا فتحنا الاتصال بقاعدة البيانات Telephone المتواجدة فى مجلد البرنامج

السطر الخامس: هو استدعاء لــ Sub من خلاله يتم ملئ البيانات من قاعدة البيانات ووضع التيجة فى اداة العرض MSFlexGrid
ويكون الكود كالتالى :


كود :
Sub Filldata()
If rs.State = 1 Then rs.Close
rs.Open "Tabel1", db, adOpenStatic, adLockPessimistic
MSFlexGrid1.Rows = rs.RecordCount + 1
MSFlexGrid1.Cols = 3
MSFlexGrid1.ColWidth(0) = 800
MSFlexGrid1.ColWidth(1) = 3500
MSFlexGrid1.ColWidth(2) = 3100
MSFlexGrid1.ColAlignment(-1) = 3
MSFlexGrid1.TextMatrix(0, 0) = "الرقم"
MSFlexGrid1.TextMatrix(0, 1) = "الإســـــــــــم"
MSFlexGrid1.TextMatrix(0, 2) = "رقم الهـــــــــاتف"
For i = 1 To rs.RecordCount
MSFlexGrid1.TextMatrix(i, 0) = rs!Num
MSFlexGrid1.TextMatrix(i, 1) = rs!Nme
MSFlexGrid1.TextMatrix(i, 2) = rs!Phone
rs.MoveNext
Next
End Sub
السطر الاول : اذا كان الجدول مفتوح يتم إغلاقه
السطر الثانى : فتح الجدول

السطر الثالث : هنا اخبرنا اداة العرض ان عدد صفوفها هو عدد السجلات +1 والعدد 1 هو لصف العمود

السطر الرابع : عدد الاعمدة يساوى 2

من السطر الخامس الى السطر الثامن : ضبط عرض الخلايا والمحاذاة

من السطر التاسع الى السطر الحادى عشر : تسمية الاعمدة

اما السطور الاخيرة : عملنا حلقة تكرار تبدأ من (1) الى عدد السجلات ونعطى جدول البيانات المرور للسجل التالى لكى لاتتكرر السجلات ومن ثم نهاية الحلقة


عمل Sub :

كود :
Sub ClearAll()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
End Sub
هنا يتم إستدعاءه فى حالة تفريغ الخانات بدل كل مرة اكتب الكود أعلاه فى حالة التفريغ

فى كود الإضافة :
كود :
Call ClearAll
كود الحفظ :
كود :
If rs.State = 1 Then rs.Close
sql = "select * from Tabel1 where Num =" & Text1.Text & ""
rs.Open sql, db, adOpenKeyset, adLockOptimistic
If rs.EOF Then
rs.AddNew
rs![Num] = Text1.Text
rs![Nme] = Text2.Text
rs![Phone] = Text3.Text
rs.Update
MsgBox " تمت عمليه الحفظ بنجاح", vbInformation
Call ClearAll
Call Filldata
Else
MsgBox " هذا الرقم موجود مسبقاً", vbCritical
Text1.SetFocus
End If

فى كود الحفظ يتم التحقق من الرقم المدخل اذا لم يجد الرقم تتم الاضافة اما اذا وجد الرقم لايتم الحفظ
كود التعديل :
كود :
If rs.State = 1 Then rs.Close
sql = " select * from Tabel1 where Num =" & Text1.Text & ""
rs.Open sql, db, adOpenKeyset, adLockPessimistic
rs![NON] = Text1.Text
rs![Nme] = Text2.Text
rs![Phone] = Text3.Text
rs.Update
MsgBox " تمت عمليه التعديل بنجاح", vbInformation
Call ClearAll
Call Filldata


كود الحذف :
كود :
If rs.State = 1 Then rs.Close
sql = "Delete * from Tabel1 where Num =" & Text1.Text & ""
rs.Open sql, db, adOpenKeyset, adLockOptimistic
MsgBox " تمت عمليه الحذف بنجاح", vbInformation
Call ClearAll
Call Filldata
☼  إضغط دبل كليك على الاداة MSFlexGrid واكتب الكود التالى فى حدث MSFlexGrid1_Click

كود :
Text1.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0)
Text2.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1)
Text3.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2)
اى عند الضغط مرة واحدة على اى سطر من السطور يتم عرض بياناته على صناديق النص
الان اعمل Run وشوف النتيجة



إضافة بسيطة :

بالنسبة للإخوة اللذين يعتمدون على أداة Adodc في التعامل مع قاعدة  البيانات لن يتمكنوا من عرض محتويات الجداول داخل MsFlexGrid ، لأن  MsFlexGrid لا تدعم أداة Adodc ولكن تدعم أداة Data لربط قاعدة البيانات .

الحل :

اذا كنت تريد العمل على اداة Adodc لربط قاعدة البيانات وفي نفس الوقت تربط FlexGrid بها والاستغناء عن الـ DataGrid ؛ - للاستفادة من تلوين الاعمدة او الصفوف وما الى ذلك - ، قم بتنفيذ نفس الخطوات التي ذكرها اخي الكريم الفاضل hago بالنسبة لإضافة اداة Microsoft FlexGrid Control 6.0 .

ولكن ..

هذه المره اختر   Microsoft Hierarchical FlexGrid Control 6.0 ( OLEDB .

وهي اداة مطابقة لـ MsFlexGrid و
لها نفس الخصائص  إلا انها تدعم اداة Adodc بالنسبة للربط من خلال شاشة الخصائص .

تمتع بخصائص الاداتين معاً

اسأل الله العلى العظيم ان اكون قد وفقنى فى موضوعى هذا متمنياً لكم مزيداً من التقدم
وفى النهاية : اذا الشرح جيد وعجبكم فهو من عند الله اما غير هذا فهو من عندى
Smile



الملفات المرفقة
.rar   Ado Connections.rar (الحجم : 21.45 ك ب / التحميلات : 408)
سبحان الله وبحمده سبحان الله العظيم
آللهم لگ آلحمد حتى ترضى .. ولگ آلحمد إذا رضيِت .. ولگ آلحمد بعد آلرضآ
الرد }}}
#2
بسم الله الرحمن الرحيم

السلام عليكم اخي hago [COLOR="#FF0000"] مشكور جدآ وباأأرك الله فيك وزادك علمآ شرح وافي وموفى
تستحق الترقيه واكثر اخي والله ،،، شرح ولا اجمل [/COLOR]
الرد }}}
تم الشكر بواسطة:
#3
الميسري كتب :بسم الله الرحمن الرحيم

السلام عليكم اخي hago مشكور جدآ وباأأرك الله فيك وزادك علمآ شرح وافي وموفى
تستحق الترقيه واكثر اخي والله ،،، شرح ولا اجمل
جمعاً يأأأأأأأأأأأرب
اشكرك ياصديقى الميسري هذا من فضل ربى

واشكر ايضا الادراة لتثبيت الموضوع وإن شاء الله أعد بالافضل
سبحان الله وبحمده سبحان الله العظيم
آللهم لگ آلحمد حتى ترضى .. ولگ آلحمد إذا رضيِت .. ولگ آلحمد بعد آلرضآ
الرد }}}
تم الشكر بواسطة: awidan76
#4
بارك الله فيك اخي hago وزادك علما ونفع بك

شرحك مرتب ومفصل ، جزاك الله خيرا
الرد }}}
تم الشكر بواسطة: awidan76
#5
eng.mprog كتب :بارك الله فيك اخي hago وزادك علما ونفع بك
شرحك مرتب ومفصل ، جزاك الله خيرا
شكراً لك اخى eng.mprog واسعدنى مرورك Smile
سبحان الله وبحمده سبحان الله العظيم
آللهم لگ آلحمد حتى ترضى .. ولگ آلحمد إذا رضيِت .. ولگ آلحمد بعد آلرضآ
الرد }}}
تم الشكر بواسطة: awidan76
#6
بسم الله الرحمن الرحيم

إضافة بسيطة :

بالنسبة للإخوة اللذين يعتمدون على أداة Adodc في التعامل مع قاعدة البيانات لن يتمكنوا من عرض محتويات الجداول داخل MsFlexGrid ، لأن MsFlexGrid لا تدعم أداة Adodc ولكن تدعم أداة Data لربط قاعدة البيانات .

الحل :

اذا كنت تريد العمل على اداة Adodc لربط قاعدة البيانات وفي نفس الوقت تربط FlexGrid بها والاستغناء عن الـ DataGrid ؛ - للاستفادة من تلوين الاعمدة او الصفوف وما الى ذلك - ، قم بتنفيذ نفس الخطوات التي ذكرها اخي الكريم الفاضل hago بالنسبة لإضافة اداة Microsoft FlexGrid Control 6.0 .

ولكن ..

هذه المره اختر Microsoft Hierarchical FlexGrid Control 6.0 ( OLEDB .

وهي اداة مطابقة لـ MsFlexGrid و
لها نفس الخصائص إلا انها تدعم اداة Adodc بالنسبة للربط من خلال شاشة الخصائص .

تمتع بخصائص الاداتين معاً

شكرا ،،
الرد }}}
تم الشكر بواسطة: محمد ئوزبك , محمد ئوزبك , awidan76
#7
السلام عليكم شرح موفق زاد الله علمك وفقك الله للخير اخي hagoبارك الله بيك
الرد }}}
تم الشكر بواسطة: awidan76
#8
شرح حلو جدا يسلموا على الشرح الرائع جدا

بارك الله فيك
الرد }}}
تم الشكر بواسطة: awidan76
#9
سبحان الله وبحمده سبحان الله العظيم
آللهم لگ آلحمد حتى ترضى .. ولگ آلحمد إذا رضيِت .. ولگ آلحمد بعد آلرضآ
الرد }}}
تم الشكر بواسطة: awidan76
#10
اللهم اجعل هذا الشرح في ميزان حسنات صاحبنا و اخونا hago
الرد }}}
تم الشكر بواسطة: awidan76



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم