بسم الله الرحمن الرحيم
شرح متواضع على كيفية الإتصال بقاعدة البيانات وجلب بيانات عن طريق دوال لغة الإستعلامات sql
من القوائم تختار قائمة project ثم تختار References والملف المطلوب للعمل هو Microsoft Activex Data Objects 2.8 library
تصفح القائمة ستجد فيها هذه المكتبات dll
Microsoft Activex Data Objects 2.0 library
Microsoft Activex Data Objects 2.1 library
Microsoft Activex Data Objects 2.5 library
Microsoft Activex Data Objects 2.6 library
Microsoft Activex Data Objects 2.7 library
Microsoft Activex Data Objects 2.8 library
ولماذا أختارهذه المكتبة أو الملف البرمجى؟؟
هذا الملف dll يحتوى على جميع الأوامر البرمجية التى صممت مسبقا من Microsoft والخاصة بالتعامل مع قواعد البيانات من انشاء واضافة وتعديل وحذف بيانات وجداول واستدعاء وغيره. وهذه الأوامر موجودة بهذا الملف لكن لن تستطيع استدعاء تلك الأوامر فى مشروعك قبل ربط تلك المكتبة بالمشروع .
كيف أربط مشروعى بهذه المكتبة؟؟
كالتالى
من القوائم تختار قائمة project ثم تختار References
ثم تختار المكتبة Microsoft Activex Data Objects 2.8 library وهى آخر اصدار كما يمكنك اختيار اصدار آخر
الآن أصبحت تستطيع التعامل مع أكواد هذه المكتبة
كيف أكتب الأكواد؟
أولا يجب أن تقوم بتعريف هذه المكتبة فى مشروعك كالأتى
فى أعلى شاشة الكود تجد قسم يسمى General وهو قسم التصريحات العامة الخاصة بالنموذج الحالى
وهنا تكتب تعريف كائن قاعدة البيانات:
Dim DB As New ADODB.Connection ليس شرطا أن تسمى المتغير DB يمكنك تسميته أى اسم آخر
وكلمة Dim هى من الكلمات المحجوزة فى الفيجوال بيسك والتى تكتب عند تعريف متغير ما.
تعريف كائن التعامل مع السجلات:
Dim rs As New ADODB.Recordset ليس شرطا أن تسمى المتغير rs يمكنك تسميته أى اسم آخر
ستجد الفيجوال تلقائيا يظهر لك قائمة الإقتراحات عند الكتابة فإذا كتبت dim ثم مسافة ستجد القائمة قد ظهرت يمكنك اختيار البارا ميتر الذى تحتاجه
الشكل النهائى للكود فى قسم التصريحات General
Dim DB As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As string متغير لتخزين جملة الإستعلام فيه
شفرة الإتصال بقاعدة البيانات وقد وضعناها فى اجراء لكى يتم استدعاءها عند الحاجة بدلا من كتابتها فى كل مرة نريد فتح الإتصال مع قاعدة البيانات و كلمة provd اسم الإجراء وهو اختيارى يمكنك تسميته بأى اسم شرط ألا يكون من الكلمات المحجوزة.
اجراء بداخله شفرة الإتصال بقاعدة البيانات
Private Sub provd ()
If DB.State = adStateOpen Then DB.Close
" DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=123; Data Source=" & App.Path & "\data.mdb
If rs.State = adStateOpen Then rs.Close
End Sub
شرح الكود:
If DB.State = adStateOpen Then DB.Close
لو كانت قاعدة البيانات مفتوحة قم بغلقها
DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=123; Data Source=" & App.Path & "\data.mdb"
شفرة الإتصال بقاعدة البيانات وفتحها والتى هى فى نفس مسار البرنامج واسمها DATA ومحمية بكلمة مرور وهى123
Microsoft.Jet.OLEDB.4.0;Jet OLEDB هذا الجزء من الشفرة خاص بإصدار أكسيس ما بعد اصدار 97 وهو يعمل على 2007
If rs.State = adStateOpen Then rs.Close
• لو كان كائن السجلات مفتوحا قم باغلاقه (وذلك لتلافى حدوث أخطاء)
END SUB وهو نهاية هذا الإجراء
كود جلب المجموع الكلى للحقل
Private Sub Command3_Click()
Call provd
sql = "select sum(num)from tablemax"
rs.Open sql, DB, adOpenKeyset, adLockPessimistic
( Text1 = rs.Fields(0
MsgBox " " & rs.Fields(0), vbInformation
End Sub
Call من الكلمات المحجوزة وتستخدم لإستدعاء أى اجراء لكى يتم تنفيذه
Call provd لإستدعاء اجراء الإتصال كما سبق شرحه
sql = "select sum(num)from tablemax"
المتغير sql يمكنك كتابة أى شىء آخر
شرح جملة الإستعلام
select حدد (أساس الجملة)
sum مجموع (دالة)
(num)اسم الحقل (متغير)
From من الجدول (ثابت)
tablemax اسم الجدول (متغير)
اعطاء هذه القيمة الى كائن السجلات لفتحها كالتالى
rs.Open sql, DB, adOpenKeyset, adLockPessimistic
الشرح
rs.Open يا كائن السجلات قم بفتح sql (sql هو المتغير الذى يحمل جملة الإستعلام)
DB متغير شفرة الإتصال بقاعدة البيانات
, adOpenKeyset, adLockPessimistic
مؤشرات التعامل مع السجلات وهى 4 أنواع
اظهار الناتج فى صندوق النص
( Text1 = rs.Fields(0
القيمة الناتجة ستكون سجل واحد فقط وهو مجموع الحقل لأننا لم نستدعى كافة حقول الجدول
اظهار الناتج فى صندوق الرسالة
MsgBox "?????" & rs.Fields(0), vbInformation
يتم استخدام باقى الدوال بعد تغيير اسم الدالة من الكود
"select sum(num)from tablemax"
"select min(num)from tablemax"
"select max(num)from tablemax"
"select count(num)from tablemax"
"select first(num)from tablemax"
"select last(num)from tablemax"
والسلام عليكم ورحمة الله وبركاته
منقول