fighters

    الدرس الثانى من احتراف صناعة البرمجيات الخاصة بالتعامل مع قواعد البيانات

    شاطر
    avatar
    fighter
    الـمـديـرالـعـام
    الـمـديـرالـعـام

    عدد الرسائل : 226
    العمر : 28
    مزاجى :
    تاريخ التسجيل : 16/04/2008

    03 الدرس الثانى من احتراف صناعة البرمجيات الخاصة بالتعامل مع قواعد البيانات

    مُساهمة من طرف fighter في الخميس مايو 01, 2008 8:59 pm



    بسم الله الرحمن الرحيم

    اشهد أن لا إله إلا الله وأن محمد عبده ورسوله خاتم الأنبياء والمرسلين.

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

    ......في الحلقة السابقة تم الحديث عن مكتبة الـ DAO وكان الكلام موجة بالخصوص علي الجزئية الخاصة بـعمل AddNew و Update.

    في هذه الحلقة سيتم الكلام عن الأمر الخاص بـ Find وكيفية عمل Find باستخدام Combobox والتكلم عن جمل الاستعلام SQL باستخدام مكتبة الـ DAO.

    الأمر SAVE:

    هنا سأقوم بشرح الأمر نظري أولا:

    كما
    تري في الصورة التالية يوجد الـ Form التي تم العمل عليها في المحاضرة
    السابقة ولكن بإضافة Button وتم تغيير خاصية الـ Caption إلي Save.

    أولا:-
    كما بالصورة يتم الاستدعاء بدلالة الاسم لكي يتم البحث داخل قاعدة
    البيانات لابد من حجز متغير بالذاكرة يتم من خلاله النداء علي الاسم
    المراد البحث عنه كما يلي:


    الكود:
    Dim x As String
        x = InputBox("لا يوجد سجل بهذا الاسم ")






    ومن
    ثم حجز السجل في الـ Memory داخل المتغير الذي قمنا بالإعلان عنة في
    المحاضرة السابقة المسمي RS وكان من النوع Recordset وذلك من خلال الكود
    التالي:

    الكود:
    RS.FindFirst " name = '" + x + "'"

    ولو كان نتيجة البحث أنه لا يوجد حقل بنفس هذا الاسم يتم ظهور رسالة بذلك ويتم مسح السجلات.

    أما إذا كان نتيجة البحث إيجابية يتم استدعاء السجل ويتم عرضة للمستخدم.


    أظن كده مفهوم:

    هنا يأتي مرحلة التطبيق العملي.

    يتم فتح شاشة الكود الخاصة بزر Find ويتم كتابة الكود التالي:-
    الكود:

    Private Sub Command3_Click()
        Dim x As String
        x = InputBox("أدخل أسم العميل")
        RS.FindFirst " name = '" + x + "'"
        If RS.NoMatch Then
            MsgBox " لا يوجد عميل بهذا الاسم"

            Text1.Text = ""
            Text2.Text = ""
            Text3.Text = ""
            Text4.Text = ""

            Exit Sub

        End If
     
        Text1.Text = RS("name")
        Text2.Text = RS("code")
        Text3.Text = RS("phone")
        Text4.Text = RS("address")
     
    End Sub

    طريقة أخري لكتابة الكود:

    الكود:
    Private Sub Command3_Click()

        Dim x As String
        x = InputBox("أدخل أسم العميل")
        RS.FindFirst " name = '" + x + "'"
        Text1.Text = RS("name")
        Text2.Text = RS("code")
        Text3.Text = RS("phone")
        Text4.Text = RS("address")

    End Sub

    ولكن عند تطبيق هذا الكود لو كان الاسم موجود سيتم العرض بشكل سليم ولكن
    لو كان الاسم غير موجود داخل قاعدة البيانات أولا لا يوجد رسالة يتم عرضها
    للمستخدم تفيد بذلك ثانيا والأهم عندما يقوم بالبحث ولا يوجد لهو نتيجة
    يقوم بالرجوع إلي وضعة الأصلي أول السجل ويتم عرض بياناته.

    وهذا لا يصح طبعا!!!!!!

    ملاحظة: أي شيء مع البرمجة ممكن وأي مشكلة يتم حلها بأكثر من طريقة.

    أظن كود الحفظ مفهوم.

    نكمل
    الأمر Delete:

    نفس البرنامج السابق ولكن بإضافة Button
    جديد نسميه Delete وظيفية عندما نريد عمل حذف لسجل ما يتم استدعاء هذا
    السجل أولا ثم الضغط علي زر Delete فيقوم بحذف السجل.

    في الخطوة
    السابقة عند عمل استدعاء لسجل ما يقوم المؤشر بالوقوف علي ذلك السجل وعند
    الضغط علي زر Delete يقوم البرنامج بحذف السجل الذي يقف علية المؤشر.

    كود الأمر Delete:

    الكود:
    Private Sub Command4_Click()

    RS.Delete

        Text1.Text = ""
        Text2.Text = ""
        Text3.Text = ""
        Text4.Text = ""

    End Sub

    والي هنا قد تعلمنا كيفية عمل New و Save و Find و Delete كل هذا باستخدام
    مكتبة DAO مباشرة بالكود ولم أتكلم عن استخدام Data Control ليس لأنها مش
    مهمة بل هي أداة مهمة جدا لم أتكلم عنها لأنها مش محتجة شرح وأظن أنها
    مشروحة في المنتدى ولكن يعيبها بعض الأمور أنها لا تنفع مع المشاريع
    الكبيرة نسبيا يعني:

    لو عندك مشروع صغير يتكون من أربع أو خمس
    Forms وقاعدة بيانات صغيرة إذا يمكنك التعامل معها أما لو كان يتكون
    البرنامج من عشر Forms وأكثر سوف يكون هنا حمل زائد نظرا لفتح قنوات اتصال
    كثيرة وهنا من الممكن أن يضرب البرنامج ويعمل مشاكل أنت في غني عنها, وليس
    معني ذلك أن تنسيData Control لا سوف تحتجها في بعض الأحيان وفي بعض
    الأحيان سيتم التعامل مع مكتبة الـ DAO من خلال الكود

    ملاحظة:- كل
    هذا الكلام مدخل للمشروع الذي سيتم طرحة في أخر الكلام عن موضوع DAO
    وبعدها سيتم الدخول علي مكتبة ADO وسوف يكون الكلام عليها كثيرا نظرا
    لأهميتها.


    * كيفية استدعاء حقل معين ووضعه داخل Combobox

    كما
    تري في الصورة التالية في الجدول الذي قمنا بالعمل علية يوجد حقل أسمة
    Name ويوجد بهي بعض الأسماء نريد جلب هذه البيانات وإدخالها في Combobox
    ومن ثم عمل بحث من خلالها.



    نقوم أولا بإضافة Button و Combobox ليصبح شكل الـ Form كما بالشكل التالي:



    سنقوم
    الأن بكتابة الكود الخاص بعملية التعبئة الخاصة بـ Combobox وسيتم كتابة
    الكود في منطقة الـ Combobox ذات نفسه في الحدث الخاص عندما يتم الضغط علي
    Combobox لكي يتم أظهار ما بالجدول وهذا الحدث يسمي DropDown وهذا الكود
    ينفذ عند الضغط علي Combo لإظهار القائمة الخاصة بهي.

    الكود DropDown:
    الكود:

    Private Sub Combo1_DropDown()

     Do While Not RS.EOF
      Combo1.AddItem RS ("Name")
        RS.MoveNext

        Loop
     
    End Sub

    شرح الكود:

    DO while هذه حلقة بدايتها DO ونهاية هذه الحلقة Loop.
    وهذه الحلقة المراد منها ( سأقوم بشرح الكود أثناء عمله )

    DO while أفعل عندما يكون RS.EOF معني EOF (End Of File) أي الوصول لنهاية
    الملف وعكسها (BOF) وقد قمت بوضع Not قبلها أي أفعل طول ما RS موصلتش إلي
    نهاية الملف.

    Combo1.AddItem RS ("Name") ضيف Item في Combo سيقوم
    بإضافة أول اسم في الجدول ثم RS.Movenext أنزل علي الذي يليه فتقف RS علي
    هذا الحقل وبعد ذلك تقبله Loop ثم يلف ثاني داخل الحلقة RS موصلتش إلي
    نهاية الملف أه يلقي RS وقفة علي الاسم الثاني يقوم بإضافتها ثم تقوم RS
    بالنزول إلي السجل الذي يليه الثالث وبعد ذلك تقبله Loop فيستمر في هذه
    الحلقة حتى يصل إلي نهاية الملف فعند ذلك يتوقف الـ Loop.

    جرب الكود السابق وتأكد من عمله بشكل جيد.

    هنا تم ملئ الـ Combobox بجميع الأسماء التي توجد بحقل Name كما نريد
    الباقي هنا كتابة الكود الخاص بعملية Find بناء علي الـ Combobox.

    كود Find بناء علي الـ Combobox:
    الكود:

    RS.FindFirst " name = '" + Combo1.Text + "'"    If RS.NoMatch Then

            MsgBox "لا يوجد عميل بهذا الاسم"
            Text1.Text = ""
            Text2.Text = ""
            Text3.Text = ""
            Text4.Text = ""

            Exit Sub

        End If
     
        Text1.Text = RS ("name")
        Text2.Text = RS ("code")
        Text3.Text = RS ("phone")
        Text4.Text = RS ("address")
     
    End Sub

    أظن هذا الكود مفهوم هو نفس الكود الخاص بعملية البحث الذي تم شرحها أولا
    و التغير كان بدل من استخدام متغير في عملية البحث هنا تم استخدام
    Combobox في عملية البحث وهذه الطريقة تستخدم كثيرا في مساعدة المستخدم في
    أدخال البيانات بدل كتابتها وهذا ما سنتعرف علية في وقته إن شاء الله
    وسيكون ذلك عند الحديث عن المشروع الذي سننهي بهي الحديث عن مكتبة الـ DAO.




    _________________

      الوقت/التاريخ الآن هو الخميس ديسمبر 14, 2017 3:55 pm