14-10-12, 02:26 PM
كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
سوف نقوم في هذا الدرس بربط قواعد البيانات من
Access مع Visual Basic من خلال الأداة DataControl .
وسنستخدم قاعدة البيانات التي أنشأناها قبل اضافة العلاقات في دروس الأكسيس ...
البداية :
وللبدء بعد قيامك بتشغيل الفيجوال بيسك ، قم باختيار أداة DataControl وقم برسمها على الفورم .
الآن قم بحفظ الملف في نفس المسار الذي تضع فيه قاعدة البيانات .
ولا تنس أن تحول قاعدة البيانات إلى اصدار سابق كما تعلمنا سابقاً . ذلك أن هذه الأداة لا تتعامل سوى مع الاصدار 97 من أكسيس .
خصائص الأداة :
سنبدأ الآن في شرح أهم خصائص هذه الأداة والتي سوف نتعامل معها .
Connect
البداية :
وللبدء بعد قيامك بتشغيل الفيجوال بيسك ، قم باختيار أداة DataControl وقم برسمها على الفورم .
الآن قم بحفظ الملف في نفس المسار الذي تضع فيه قاعدة البيانات .
ولا تنس أن تحول قاعدة البيانات إلى اصدار سابق كما تعلمنا سابقاً . ذلك أن هذه الأداة لا تتعامل سوى مع الاصدار 97 من أكسيس .
خصائص الأداة :
سنبدأ الآن في شرح أهم خصائص هذه الأداة والتي سوف نتعامل معها .
Connect
: تحدد نوع البرنامج الذي سوف تتعامل معه هذه الأداة ... لذا اختر Access .
DatabaseName
: فيها نحدد مسار قاعدة البيانات ... قم بالضغط على ازرار الاستعراض (...) واختر قاعدة البيانات المحولة .
RecordSource
: تحدد فيها الجدول الذي تريد عرض البيانات منه ... قم باختيار Tb_Main .
جرب الآن عمل Run للبرنامج وتأكد أن ليس ثمة أخطاء - لن يظهر شيء - ولكن تأكد من عدم ظهور رسالة خطأ .
أكثر رسائل الخطأ شيوعاً في هذه المرحلة هي الرسالة التي ترشدك إلى أن البرنامج لم يتعرف على نظام قاعدة البيانات ، في الواقع سبب هذا الخطأ هو اهمال الخطوة التي ذكرناها والتي تتعلق بتحويل قاعدة البيانات إلى نسق Access 97 .
الآن سوف نبدأ في اضافة مربعات النص Textbox والتي سوف تعرض فيها بيانات الجدول .
قم الآن باضافة أحد مربعات النص ... وابدأ في تغيير الخصائص الخاصة بقواعد البيانات ، وذلك على النحو التالي :
DataSource
أكثر رسائل الخطأ شيوعاً في هذه المرحلة هي الرسالة التي ترشدك إلى أن البرنامج لم يتعرف على نظام قاعدة البيانات ، في الواقع سبب هذا الخطأ هو اهمال الخطوة التي ذكرناها والتي تتعلق بتحويل قاعدة البيانات إلى نسق Access 97 .
الآن سوف نبدأ في اضافة مربعات النص Textbox والتي سوف تعرض فيها بيانات الجدول .
قم الآن باضافة أحد مربعات النص ... وابدأ في تغيير الخصائص الخاصة بقواعد البيانات ، وذلك على النحو التالي :
DataSource
: تحدد الأداة مصدر البيانات ... لذا اختر أداة Date1 .
DataField
: تحدد الحقل الذي سوف يظهر في مربع النص ... لذا اختر Number .
الآن جرب ثانية عمل Run للبرنامج .
لاحظ ظهور أول رقم في قاعدة البيانات داخل مربع النص .
الآن انظر إلى الأداة ... سوف تجد أربعة أسهم ... جرب التنقل بواسطتها ، وستجد محتويات Text1 تتغير حسب طريقة تنقلك .
هذا ببساطة كل ما يتعلق بربط قاعدة البيانات مبدئياً ومن خلال DataControl ، إذا كنت تواجه بعض المشاكل مع هذه البداية السريعة وما سيليها فحاول قراءة بعض الدروس عن الفيجوال بيسك قبل قراءة باقي الدرس ، في الواقع انصح بكتاب الاستاذ تركي العسيري ( نحو برمجة كائنية التوجه OOP ) وهو كتاب يحتوي معلومات للمبتدئين وحتى المتقدمين في الفيجوال بيسك .
الآن ... سوف نبدأ في اضافة مربعات نص لجميع الحقول بنفس الطريقة السابقة ... جرب اضافة Lable بجانب كل Text لتوضيح محتواه .
وسنضيف الحقول التالية تماماً كما هو الحال مع ما سبق :
الرقم - الاسم الأول - الاسم الأخير - الهاتف - العمر - العنوان - البريد الالكتروني - السنة الدراسية - اللغة - الموقع - متزوج/لا .
ولا تنس أن تضيف مربعات نص TextBox - أدوات عنوان للتوضيح Label .
بالنسبة لحقل Marry - متزج . اضف مربع اختيار واربطه بقاعدة البيانات مثل مربع النص تماماً .
بعد ذلك قم بتجريب البرنامج ... وتنقل بين السجلات كما تريد .
هكذا تكون قد اتممت الربط بين قاعدة بيانات بسيطة وبرنامج فيجوال بيسك .
والآن سوف نتعرف على أوامر التنقل في قواعد البيانات .
لو كنت قد نظرت إلى مثال الدرس السابق لوجدت أن أداة DataControl تحتوي على أربعة أزرار للتنقل إلى ( الأول - السابق - التالي - الأخير ) ، وكذا لو لاحظت لوجدت ان وضع هذه الأداة ليس احترافياً ، ولذا فإننا سنستعيض بالأزرار CommandButton عنها منذ الآن فصاعداً .
إن الكائن المختص بالتعامل مع الجداول في هذه الأداة يطلق عليه اسم Recordset وتندرج تحته أكثر أوامر الجداول شيوعاً مثل أوامر التنقل والبحث والتعديل وغيرها .
سنبدأ الآن في التطبيق العملي ... وقبل أن نبدأ سنقوم باخفاء أداة Data1 عن طريق ضبط خاصية Visible لتساوي False لهذه الأداة .
والآن قم برسم أربعة أزرار Command1,Command2,Command3,Command4 .
أبدأ بأولهم والذي سيكون مخصصاً لزر الأول . اكتب اسم أداة قاعدة البيانات بعدها . - نقطة -
ستلاحظ ظهور قائمة من الخصائص سنختار منها RecordSet ثم نضع . - نقطة - .
ستظهر لنا كافة الخصائص والوظائف المتعلقة بالتعامل مع الجداول ، ما يهمنا هو MoveFirst ، ليصبح الأمر بالشكل التالي :
Data1.Recordset.MoveFirst
بنفس الطريقة أوامر السابق :
Data1.Recordset.MovePrevious
التالي :
Data1.Recordset.MoveNext
الأخير :
data1.Recordset.MoveLast
والآن قم مجدداً بتجربة المثال حتى الآن .
ستعمل معك الأوامر بصورة صحيحة ما عدا في حالات خاصة ، عندما تضغط على زر التالي أو السابق حتى تصل إلى النهاية أو البداية ثم تواصل الضغط ، هنا ستظهر لك رسالة تفيد بإنه لا يوجد سجل .
وسوف يتوقف البرنامج برسالة خطأ رقم 4021 .
لحل هذه المشكلة لدينا خاصيتان هما Eof والتي تعطي True إذا كنا في نهاية الجدول .
والخاصية الثانية هي Bof والتي تعطي True عندما نكون في بداية الجدول .
وهاتان الخاصيتان مستخدمة بكثرة في قواعد البيانات والعمل مع الملفات - وفي لغات أخرى ايضاً - .
لذا لابد من التأكد من قيمها ، وذلك لعدم تجاوز الحقل الأخير ، وفي حالة اعطاء قيمة True للخاصية المناسبة فإننا سننتقل للسجل الأول ، أو للأخير .
وذلك كالتالي :
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then Data1.Recordset.MoveLast
والسابق .
Data1.Recordset.MovePrevious
If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst
تبقت مشكلة أخيرة ، وهو إذا كانت قاعدة البيانات فارغة من أساسها ، لذا سوف نستخدم إحدى خصائص الكائن Data1.RecordSet وهي الخاصية RecordCount وتعطينا عدد السجلات الفعلي في قواعد البيانات .
وفي حالة عدم وجود أي سجل فإننا سوف نخرج من اجراءات التنقل مباشرة بواسطة الأمر Exit Sub .
نواصل في الدرس القادم بإذن الله .
والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
لاحظ ظهور أول رقم في قاعدة البيانات داخل مربع النص .
الآن انظر إلى الأداة ... سوف تجد أربعة أسهم ... جرب التنقل بواسطتها ، وستجد محتويات Text1 تتغير حسب طريقة تنقلك .
هذا ببساطة كل ما يتعلق بربط قاعدة البيانات مبدئياً ومن خلال DataControl ، إذا كنت تواجه بعض المشاكل مع هذه البداية السريعة وما سيليها فحاول قراءة بعض الدروس عن الفيجوال بيسك قبل قراءة باقي الدرس ، في الواقع انصح بكتاب الاستاذ تركي العسيري ( نحو برمجة كائنية التوجه OOP ) وهو كتاب يحتوي معلومات للمبتدئين وحتى المتقدمين في الفيجوال بيسك .
الآن ... سوف نبدأ في اضافة مربعات نص لجميع الحقول بنفس الطريقة السابقة ... جرب اضافة Lable بجانب كل Text لتوضيح محتواه .
وسنضيف الحقول التالية تماماً كما هو الحال مع ما سبق :
الرقم - الاسم الأول - الاسم الأخير - الهاتف - العمر - العنوان - البريد الالكتروني - السنة الدراسية - اللغة - الموقع - متزوج/لا .
ولا تنس أن تضيف مربعات نص TextBox - أدوات عنوان للتوضيح Label .
بالنسبة لحقل Marry - متزج . اضف مربع اختيار واربطه بقاعدة البيانات مثل مربع النص تماماً .
بعد ذلك قم بتجريب البرنامج ... وتنقل بين السجلات كما تريد .
هكذا تكون قد اتممت الربط بين قاعدة بيانات بسيطة وبرنامج فيجوال بيسك .
والآن سوف نتعرف على أوامر التنقل في قواعد البيانات .
لو كنت قد نظرت إلى مثال الدرس السابق لوجدت أن أداة DataControl تحتوي على أربعة أزرار للتنقل إلى ( الأول - السابق - التالي - الأخير ) ، وكذا لو لاحظت لوجدت ان وضع هذه الأداة ليس احترافياً ، ولذا فإننا سنستعيض بالأزرار CommandButton عنها منذ الآن فصاعداً .
إن الكائن المختص بالتعامل مع الجداول في هذه الأداة يطلق عليه اسم Recordset وتندرج تحته أكثر أوامر الجداول شيوعاً مثل أوامر التنقل والبحث والتعديل وغيرها .
سنبدأ الآن في التطبيق العملي ... وقبل أن نبدأ سنقوم باخفاء أداة Data1 عن طريق ضبط خاصية Visible لتساوي False لهذه الأداة .
والآن قم برسم أربعة أزرار Command1,Command2,Command3,Command4 .
أبدأ بأولهم والذي سيكون مخصصاً لزر الأول . اكتب اسم أداة قاعدة البيانات بعدها . - نقطة -
ستلاحظ ظهور قائمة من الخصائص سنختار منها RecordSet ثم نضع . - نقطة - .
ستظهر لنا كافة الخصائص والوظائف المتعلقة بالتعامل مع الجداول ، ما يهمنا هو MoveFirst ، ليصبح الأمر بالشكل التالي :
Data1.Recordset.MoveFirst
بنفس الطريقة أوامر السابق :
Data1.Recordset.MovePrevious
التالي :
Data1.Recordset.MoveNext
الأخير :
data1.Recordset.MoveLast
والآن قم مجدداً بتجربة المثال حتى الآن .
ستعمل معك الأوامر بصورة صحيحة ما عدا في حالات خاصة ، عندما تضغط على زر التالي أو السابق حتى تصل إلى النهاية أو البداية ثم تواصل الضغط ، هنا ستظهر لك رسالة تفيد بإنه لا يوجد سجل .
وسوف يتوقف البرنامج برسالة خطأ رقم 4021 .
لحل هذه المشكلة لدينا خاصيتان هما Eof والتي تعطي True إذا كنا في نهاية الجدول .
والخاصية الثانية هي Bof والتي تعطي True عندما نكون في بداية الجدول .
وهاتان الخاصيتان مستخدمة بكثرة في قواعد البيانات والعمل مع الملفات - وفي لغات أخرى ايضاً - .
لذا لابد من التأكد من قيمها ، وذلك لعدم تجاوز الحقل الأخير ، وفي حالة اعطاء قيمة True للخاصية المناسبة فإننا سننتقل للسجل الأول ، أو للأخير .
وذلك كالتالي :
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then Data1.Recordset.MoveLast
والسابق .
Data1.Recordset.MovePrevious
If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst
تبقت مشكلة أخيرة ، وهو إذا كانت قاعدة البيانات فارغة من أساسها ، لذا سوف نستخدم إحدى خصائص الكائن Data1.RecordSet وهي الخاصية RecordCount وتعطينا عدد السجلات الفعلي في قواعد البيانات .
وفي حالة عدم وجود أي سجل فإننا سوف نخرج من اجراءات التنقل مباشرة بواسطة الأمر Exit Sub .
نواصل في الدرس القادم بإذن الله .
والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .