سنتكلم في هذه المحاضرة إن شاء الله تعالي علي الجزئية الخاصة بالتعامل مع لغة SQL
وبعدها سنواصل الموضوع الخاص بالتعامل مع مكتبة الـ DAO ولكن أريد منك فهم
هذه المحاضرة جيدا لأنك ستحتاجها في كل شيء يتكلم عن قواعد البيانات في
المرحلة المقبلة.
-- مقدمة:-
نبدأ في هذه المحاضرة الدرس الأول في لغة الأستفسار البينياوية SQL
، وهي عبارة عن لغة تعامل قوية تستخدم من قبل لغات البرمجة ومحركات قواعد
البيانات كطريقة أولية للوصول الي المعطيات في قواعد البيانات.
تقسم تعابير لغة SQL إلي قسمين:
-- تعابير لغة التعامل بالمعطيات ( DML ) Data manipulation Language
-- و تعابير لغة تعريف المعطيات ( DDL ) Data Definition Language
تسمح لغة التعريف DDL بتعريف جداول المعطيات، الدلائل ( Indexes ) والعلاقات.
وتسمح تعابير لغة DML باختيار وترتيب وتلخيص ( Summarize ) وحساب المعلومات المخزنة في جداول المعطيات.
سنقتصر هنا علي تعابير لغة التعامل بالمعطيات DML، إذ سيكون بإمكانك عند الانتهاء من هذا الفصل استخدام تعابير SQL لبناء استفسار قواعد بيانات يمكن استعادتها، كما يمكن إعادة ترتيب المعطيات بأي شكل معروف في Visual BASIC وبما أن لغة SQL مستخدمة في أغلب أنظمة قواعد البيانات العلائقية ( SQL Server – Oracle – Access
) فإنه سوف يصبح بإمكانك تطبيق ما سوف تتعلمه خلال هذه المحاضرة في أغلب
بيئات قواعد البيانات العلائقية التي قد تصادفها في المستقبل.
ما هي لغة الاستفسارات البنيوية SQL؟
What Is SQL?
قبل التعرف علي تعابير في SQL وعلي استخدامها. يجب أن تفهم تعريف SQL واستخدامها وأصولها. إن SQL تعني لغة الاستفسارات البنيوية Structured Query Language
وقد طورت في السبعينيات من قبل IBM بهدف تزويد مستخدمي الحواسب بطريقة
قياسية لاختيار المعطيات من قواعد البيانات متعددة الشكل. وكانت الرغبة
بناء لغة لا تتعلق بأية لغة برمجة موجودة ولكن يمكن استخدامها من ضمن أية
لغة برمجة كطريقة لتحديث وطلب المعلومات من قاعدة البيانات. إن لغة SQL مؤلفة من تعابير فقط، وينجز كل تعبير عمليات علي كائن قاعدة معطيات أو أكثر ( جداول ، أعمدة ، دلائل ..... الخ ) وتعيد معظم تعابير SQL نتائجها علي شكل مجموعة من السجلات أو أكثر ( Data Records ) تسمي عادة مظهرا "View".
إن
أغلب البرامج التي تستخدم SQL، تخفي تعابير ها خلف واجهات تخاطب من نوع
أشر وأنقر (Point-and-click) مثل شبكات الاستفسار، وواجهات التخاطب سهلة
الاستخدام ومما لا شك فيه أنة في حالة استخدامك لتطبيق يتصل بمعطيات قاعدة
البيانات علائقية، فإنك تستخدم تعابير SQL سواء علمت أم لا.
أوامر SQL:-
سنركز في هذه المحاضرة علي الجزء المنفذ من عبارة ( Manipulative SQL
Statement ) والاختيارات ( Options ) التي يمكن أضافتها لأمر لتوجيه ناتج
الأمر مثلا لتحديد شروط الاستعلام أو نطاق السجلات أو ترتيبها. واستخدام
هذين الجزأين كاف للحصول علي استعلامات تؤدي وظائف قواعد البيانات.
تحتوي الصورة التالية جدول بأهم الأوامر الرئيسية ووظائف كل منها
الأمر SELECT:-
يأخذ الأمر Select في أبسط صورة له الشكل التالي:
- الكود:
Select { fieldList } from { TableList }
وفي هذا الشكل المبسط يقوم الأمر SELECT باختيار مجموعة الحقول المحددة في
FieldList من مجموعة الجداول TableList. يمكن استخدام (*) بدل من الكلمة
FieldList بمعني كل الحقول.
العملي:-
والي هنا يأدي دور Visual BASIC أول شي جميع الأكواد التي سوف أستخدمها في الشرح سوف تكون علي قاعدة البيانات التي تأتي مع Visual Vasic6 والتي تسمي NWIND.MDB.
وتوجد في المسار التالي C:\Program Files\Microsoft Visual Studio\VB98
قم بفتح Visual BASIC وهنا سوف نستخدم أداة Data Control وDate Bound Grid وستكون الـ Form كما بالشكل التالي:-
عمل الاتصال Connection بين أداة Data Control و قاعدة البيانات.
ملاحظة:- أداة Data Control لا يمكن ربطها بأكثر من جدول فهي تربط بجدول واحد فقط من قاعدة البيانات.
عندما
تقوم بتصميم الـ Form كما بالشكل السابق قم بعمل الخطوة التي قمة بشرحها
في المحاضرة السابقة وهي عملية حفظ المشروع وتحديد مكان الحفظ وبعد ذلك
وضع قاعة البيانات داخل الـ Folder الخاص بالمشروع لكي لا يتم حدوث مشاكل
في التطبيق بعد ذلك سأفترض قيامك بذلك بعد ذلك قم بتطبيق الخطوات التالية
معي:
1- ربط أداة Data Control بقاعدة البيانات ومن ثم تحديد الجدول الذي سيتم التعامل معه ويكون كما يلي:
* تحديد قاعدة البيانات ويكون عن طريق الخاصية الخاصة بأداة Data Control
وتسمي DataBaseName سيكون بجانبها زر عند الضغط علية سيتم ظهور شاشة يتم
من خلالها اختيار قاعدة البيانات لو قمت بعملية الحفظ كما قلت لفتحة
الشاشة في الـ Folder المحفظ بهي البرنامج وسوف يتم ظهور قاعدة البيانات
التي قمت أنت بجلبها من المسار الذي قمت بتحديده لك ونسخها في ذلك الـ
Folder قم باختيار قاعدة البيانات NWIND.MDB ثم قم بالضغط علي Open سيتم
اختيارها وكتابة المسار الخاص بها كما في الصورة التالية:
قم
بحذف كل المسار المظلل كما بالصورة السابقة ماعدا أسم قاعدة البيانات
وتجري هذه الخطوة لسبب وهو عندما يتم تشغيل المشروع وسبت المسار مكتوب سوف
يذهب البرنامج ويدور علي قاعدة البيانات في المسار المحدد لهو لو البرنامج
عندك سوف يتم التشغيل بدون مشاكل فرضنا رحت تشغل البرنامج عند العميل سوف
يكون المسار كما هو طبعا لا، وهذا سيكون خطأ كبير وقعت فيه.
ملاحظة
مهمة أنصح باستخدام مكتبة الـ DAO الأحدث وهي الإصدار3.6 ويتم استخدامها
وجلبها عن طريق قائمة Tools واختيار References، أظن قد سبق شرحها أسم
المكتبة هي Microsoft DAO 3.6 .
*** لو حدث مشاكل معك قم بعمل تحويل Convert لقاعدة البيانات لأنها قاعدة بيانات Access 97 قم بتحويلها الي Access2000 ويكون ذلك كما بالصورة التالية، وبعد ذلك قم بعمل الأتصال بناء علي قاعدة البيانات الجديدة.
بعد
قيامك بحذف المسار سوف نقوم بربط الأداة بالجدول المطلوب والذي سوف يتم
التعامل معه وذلك عن طريق الخاصية Recordsource وهي الخاصية الخاصة
بالتعامل مع الجداول ويكون كما بالشكل التالي:
وهنا
تم الاتصال بالجدول Customers وهو الجدول الذي سيتم التعامل معه إن شاء
الله طول المحاضرة حتى الوصول إلي جزئية معينة ثم الانتقال بعدها إلي جدول
أخر سيتم تحديده وقتها وسوف يستخدم في المحاضرة و المحاضرة التي تليها إن
شاء الله.
إلي هنا قد تم الاتصال ولتأكد من ذلك قم بعمل Run
للبرنامج وتأكد من عملة بنجاح لو تم ظهور الـ Form بنجاح بدون أي مشاكل
أعرف أن الاتصال تم.
ولكن إلي هنا لا يمكن عرض الجدول في الأداة
لسبب أنك معرفتوش ذلك ويتم ذلك من خلال خاصية خاصة بأداة DBGrid وهي
الخاصية DataSource عند الضغط عليها سيتم ظهور قائمة بها أسماء أدوات Data
Control الموجودة علي الـ Form والتي قمنا بربطها بقاعدة البيانات والجدول
المطلوب وبذلك قد أعلمته أنه سوف يأخذ بياناته أداة الـ Data Control
وبناء علي ذلك في الكود سوف نخاطب مين هنا أداة DBGrit أم Data Control
طبعا سيتم التعامل مع Data Control أنظر الشكل التالي:
يوضح الشكل التالي أن أداة Data Control ما إلا وسيط بين DataBase علي الـ Hard Disk والجدول الموجود في الـ Memory والذي يتم عرضة من خلال أداة DBGrid الموجودة علي Form, إلي الآن لم أتكلم عن لغة SQL وكان لابد من المقدمة تلك لكي يتم فهم ماذا يحدث بعد الآن.
نأتي الآن إلي الجزئية الخاصة بموضوعنا( لغة SQL ).
قد
أعلمتك سابقا أننا سوف نستخدم في وقت ما جدول أخر وسوف نكمل به المحاضرة
أنا صراحة طلعت (عيل) ورجعت في كلامي أنا سوف أستخدم قاعدة بيانات ثانية
خالص، أسم قاعدة البيانات Works.mdbوعليك أنت القيام بالربط من جديد وأظن
كل هذا مشروح جيدا هو وبها جدول واحد سيتم التعامل معه أسمة Products ،
سأفترض قيامك بكل هذا وسيتم الشرح بناً علية . قم بفتح المشروع الذي قمنا
بتصميمية في أول المحاضرة وقم بتغير أسم الـ Button1 إلي 1 وبعد ذلك قم
بفتح شاشة الكود الخاصة به الآن سنتعامل مع أول أمر من أوامر SQL ويعتبر أهم أمر وأكثرة انتشارا الأمر ( SELECT ) ويستخدم في اختيار مجموعة السجلات أو بعض منها حسب الشرط المكتوب.
سنقوم أولا بعرض كل السجلات الموجودة في الجدول Products الذي سيتم التعامل معه وسيكون بكتابة الكود التالي:
- الكود:
Data1.RecordSource = "select * from Products"
Data1.Refresh
في هذا الكود تم إرسال قيمة عبارة عن جملة SQL إلي RecordSource لماذا؟
لان لو أنت صاحي معايا كنت عرفت أن الخاصية RecordSource وظيفتها التعامل مع الجداول وهنا قمنا بأجراء استعلام عن جدول معين.
- الكود:
"Select * from Products"
- أنا سامع واحد بيسأل وبيقول - لماذا علامات " " هذه؟
-- أولا في المقدمة أنا قلت أن لغة SQL لما عملوها قد صممت علي أن تكون لغة مستقلة ليس لها علاقة بأي لغة برمجة فهنا تم وضع الجملة بين علامة " " لأنها ليست Visual BASIC أساسا.
نفس الشخص بيقول – تب ولية كود Data1.Refresh ؟
-- لكي تقوم أداة Data Control بالتحديث لأن فيه استعلام جديد عشان يحس بيه.
لو قمت بعمل Run وضغط علي زر Run سوف تلاحظ لا يوجد تغيير.
نفس الشخص بيقول ليييـــــــــــه؟؟؟؟!!!!!! عشان هو في الأصل بيعرض نفس نتيجة الاستعلام.