تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مثال صغير على التعامل مع دوال لغة الإستعلام sql
#1
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله

هذا شرح متواضع على كيفية الإتصال بقاعدة البيانات وجلب بيانات عن طريق دوال لغة الإستعلامات
sql عن طريق ADO وهى اختصار
Activex Data Objects
من القوائم تختار قائمة 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
رموز PHP:
Dim DB As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String  

Dim sql As string متغير لتخزين جملة الإستعلام فيه
شفرة الإتصال بقاعدة البيانات وقد وضعناها فى اجراء لكى يتم استدعاءها عند الحاجة بدلا من

كتابتها فى كل مرة نريد فتح الإتصال مع قاعدة البيانات و كلمة provd اسم الإجراء وهو اختيارى

يمكنك تسميته بأى اسم شرط ألا يكون من الكلمات المحجوزة.

اجراء بداخله شفرة الإتصال بقاعدة البيانات
رموز PHP:
Private Sub provd()
   If DB.State = adStateOpen Then DB.Close
   DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDBBig Grinatabase 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:atabase 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 وهو نهاية هذا الإجراء


كود جلب المجموع الكلى للحقل
رموز PHP:
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

القيمة الناتجة ستكون سجل واحد فقط وهو مجموع الحقل لأننا لم نستدعى كافة حقول الجدول


يتم استخدام باقى الدوال بعد تغيير اسم الدالة فى الكود
"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


المثال فى المرفقات


الملفات المرفقة
.rar   sql.rar (الحجم : 8.12 ك ب / التحميلات : 218)
الرد }}}
تم الشكر بواسطة: عمور2016
#2
شكرا على المجهود استاذ /ابو اسامة

جعله الله فى ميزان حسناتك

تقبل تحياتى .
الرد }}}
تم الشكر بواسطة:
#3
لا شكر على واجب أخى الكريم

أمين
الرد }}}
تم الشكر بواسطة:
#4
[COLOR="#000080"]شكرا لك اخي ابواسامه
لكن لوماخاب ضني انت ابواسامه المسلم او انا غلطان
[/COLOR]
الرد }}}
تم الشكر بواسطة:
#5
a_senan كتب :[COLOR="#000080"]شكرا لك اخي ابواسامه
لكن لوماخاب ضني انت ابواسامه المسلم او انا غلطان
[/COLOR]

السلام عليكم أخى الكريم a_senan

نعم أخى الكريم أنا هو لكن حذفت كلمة المسلم لأن معظمنا هنا مسلمين فلا داعى لهذه الزيادة

أرجو من الله التوفيق لإدارة المنتدى والإخوة المشرفين والأعضاء وأن يجعلنا أخوة متحابين .

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

يعلم الله أننى أحبكم فى الله
الرد }}}
تم الشكر بواسطة:
#6
السلام عليكم ورحمه الله وبركاته 


يعطيك العافية اخوي أبو أسامة  ولكن هنا سؤال  

كود :
& " ' " SQLs = "Select * From User Where UserName = ' " & Text1 & " ' And Password = '" & Text2

If RS.State = adStateOpen Then RS.Close
RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
If RS.EOF Then

وعند تشغيل البرنامج  الفيجوال يعطيني خطأ نوع   Run-timw error '-2147217900(80040e14)':خطأ في بناء الجملة في جزء من عبارة  FROM.  وكيف حال 

وشكراً اخي الكريم 
الرد }}}
تم الشكر بواسطة:
#7
السلام عليكم

تم اعادة رفع المرفق الموجود في اول مشاركة

يعطيكم العافية
(( يَا أَيَّتُهَا النَّفْسُ الْمُطْمَئِنَّةُ ارْجِعِي إِلَى رَبِّكِ رَاضِيَةً مَرْضِيَّةً فَادْخُلِي فِي عِبَادِي وَادْخُلِي جَنَّتِي ))

الرد }}}
تم الشكر بواسطة: Ahmed_Mansoor , Ahmed_Mansoor , عمور2016



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


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