الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية التعامل مع مكتبة ال DAO

مغلقرائج
بدأه رمضان في 5 ديسمبر 2001 · 75 رد · 30,015 مشاهدة · في قسم قواعد البيانات
مشاركة: واتساب X فيسبوك تيليجرام
#26
'****************************
' هذا الروتين سيمكننا من إضافة سجل جديد
'لقاعدة البيانات بعد أن نمرر له إسم القاعده
' ومسارها وإسم الجدول الذى سنضيف السجل إليه

Sub AddNew(DbName As String, strKind As String)

    Dim dbs As Database
    Dim Rs As Recordset
On Error Resume Next
Select Case strKind

   Dim strMsg As String
   Dim Count As Byte
Case "Add Saek"

    Set dbs = OpenDatabase(DbName)
    Set Rs = dbs.OpenRecordset("Saek", dbOpenTable)

    With Rs
        .AddNew
        'لربط أدوات النص بالسجل الجديد
        !sname = Trim(TxtInput(0).Text)
        !saddress = Trim(TxtInput(1).Text)
        !srokhsadegree = Trim(TxtInput(2).Text)
        !srokhsano = Trim(TxtInput(3).Text)
        !srokhsadate = CDate(TxtInput(4).Text)
        !stel = Trim(TxtInput(5).Text)
        !smobail = Trim(TxtInput(6).Text)

        .Update
'لقد جعلنا الحقل إسم السائق حقل وحيد ولذلك
' عند إضافة حقل جديد قد يخطئ المستخدم ويضع
' إسم موجود مسبقا وعندها سيصدر فيجول بيسك
' رسالة خطأ رقمها 3022
' فى هذه الحاله نخبر المستخدم ان لديه هذا الاسم
' ونغلق الجدول وقاعدة البيانات ونخرج من الروتين
        If Err.Number = 3022 Then
            MsgBox "يوجد لديك سائق يإسم " & !sname
             Rs.Close
             dbs.Close
             Exit Sub
        End If
' نخبر المستخدم انه تم إضافة السجل
' ونخيره إن كان يرغب فى إضافه سجل جديد
' فإن أجاب بنعم نفرغ خانة النص الاولى من محتوايتها
' ونترك له بقيه الخانات كما هى لتوفير الوقت
' فى حالة وجود أكثر من شخص يشترك فى بعض البيانات
' وإن أجاب بلا نلغى تحميل الادوات عن طريق الداله
' UnloadControl
' ونغلق الجدول وقاعدة البيانات
        strMsg = MsgBox("تم إضافة السائق " & !sname _
        & vbCrLf & "هل ترغب فى إضافة سائق أخر ؟ " _
        , vbMsgBoxRight + vbMsgBoxRtlReading _
        + vbQuestion + vbYesNo)

        If strMsg = vbNo Then
             Rs.Close
             dbs.Close
             UnLoadControl
        Else
                TxtInput(0).Text = ""
             Rs.Close
             dbs.Close
        End If

    End With
Case "Add Care"
' سنكملها فى الدروس القادمه
Case "Add Amel"
' سنكملها فى الدروس القادمه
Case "Add Tabah"
' سنكملها فى الدروس القادمه
Case "Add Bonat"
' سنكملها فى الدروس القادمه
Case "add Uomeah"
' سنكملها فى الدروس القادمه
Case "Add Masaref Saek"
' سنكملها فى الدروس القادمه
Case "Add Naklah"
' سنكملها فى الدروس القادمه
Case "Add Seuana"
' سنكملها فى الدروس القادمه

 End Select

End Sub

الان سنقوم بإضافة الكود الذى سيمكننا من تحميل الادوات

وقت التنفيذ

'************************************
' هذا الروتين سيمكننا من إضافة الادوات إثناء تنفيذ البرنامج
' وهو يتطلب معرفه إسم الجدول حتى نعرف عدد الادوات
' الواجب إضافتها وعنواينها
'**********************************
Sub LoadControl(MytableName As String)
Dim Count As Byte

If Not TxtInput(0).Visible Then TxtInput(0).Visible _
= True
If Not Slbl(0).Visible Then Slbl(0).Visible = True
Select Case MytableName
Case "Add Saek"
    For Count = 1 To 6
    'لتحميل الادوات
        Load TxtInput(Count)
        Load Slbl(Count)
' لتحديد موضع الادوات على النافذه
        With TxtInput(Count)
            .Left = TxtInput(Count - 1).Left
            .Top = TxtInput(Count - 1).Top + TxtInput _
            (Count - 1).Height + 50
            If Not .Visible Then .Visible = True
        End With
        With Slbl(Count)
                .Left = Slbl(Count - 1).Left
                .Top = Slbl(Count - 1).Top + _
                Slbl(Count - 1).Height + 50
            If Not Slbl(Count).Visible Then _
            Slbl(Count).Visible = True
        End With
    Next Count
' لوضع العناوين
    Slbl(0).Caption = "إسم السائق"
    Slbl(1).Caption = "العنوان"
    Slbl(2).Caption = "درجة الرخصة"
    Slbl(3).Caption = "رقمها"
    Slbl(4).Caption = "تاريخ الانتهاء"
    Slbl(5).Caption = "رقم التليفون"
    Slbl(6).Caption = "رقم المحمول"
Case "Care"

Case "View Saek"
    Slbl(0).Caption = "أدخل إسم السائق"
            If Not TxtInput(0).Visible Then _
            TxtInput(0).Visible = True
            If Not Slbl(0).Visible Then Slbl(0).Visible _
            = True
' بقية الحالات ستم إضافتها فى الدروس القادمه
End Select
If Not CmdOk.Visible Then CmdOk.Visible = True
If Not CmdCancle.Visible Then CmdCancle.Visible = True

End Sub

وهذ الروتين سقوم بإلغاء تحميل الادوات من على النافذه

'*************************************
' هذا الكود سيقوم بإلغاء تحميل الادوات من على النافذه
' وهو لابطلب أى متغيرات وإنما يقوم بإلغاء تحميل الادوات
' التى تم تحميلها من خلال الكود فقط

Sub UnLoadControl()
Dim Count As Byte
If TxtInput.UBound >= 1 Then
For Count = 1 To TxtInput.UBound
    Unload Slbl(Count)
    TxtInput(Count).Text = ""
    Unload TxtInput(Count)
Next Count
End If
TxtInput(0).Text = ""
If TxtInput(0).Visible = True Then TxtInput(0).Visible _
= False
If Slbl(0).Visible = True Then Slbl(0).Visible = False
If CmdOk.Visible Then CmdOk.Visible = False
If CmdCancle.Visible Then CmdCancle.Visible = False

End Sub
 نسيت أقولك فى قسم الاعلانات ضع الاعلان الاتى
Dim Kind_Of_Opration As String

يتبقى روتين أخر وهو الذى يمكننا من مشاهده أى سجل
الموضوع طويل صح ؟؟؟ انا قلتلك فى البدايه طيب 
إعملك فنجان قهوه أخر وانا فى إنتظارك
.............
...............
بالهنا والشفا 
جاهز الان إذن هيا بنا

' *******************************************
' هذا الروتين يقوم بعرض سجل واحد فقط وهو يتطلب أن
' تدخل له ثلاث متغيرات الاول هو إسم قاعدة البيانات
' الثنى إسم الجدول الذى سنبحث فيه عن السجل
' الثالث هو البيانات التى سنبحث عنها

Sub ViewOne(DbName As String, strTable As String, _
strData As String)

        If strData = "" Then Exit Sub

    Dim dbs As Database
    Dim Rs As Recordset
    Dim strFind
On Error Resume Next
    Set dbs = OpenDatabase(DbName)
    Set Rs = dbs.OpenRecordset(strTable, dbOpenSnapshot)
' ولكن لماذا فتحنا الريكورد سيت كا سناب شوت وليس كاتيبل
' هذه أتركها لذكائك
   Dim strMsg As String
   Dim Count As Byte

  With Rs
        .MoveFirst
' ندخل فى تكرار حتى نصل لنهاية الملف
Do While Not Rs.EOF
            If Trim(Rs.Fields(0)) = Trim(strData) Then
                LoadControl "Add " & strTable
             For Count = 0 To TxtInput.UBound
                If IsNull(.Fields(Count)) Then
                    TxtInput(Count).Text = ""
                ElseIf IsDate(Rs.Fields(Count)) Then
                    TxtInput(Count).Text = Format _
                    (Rs.Fields(Count), "d : m : yyyy")
                Else
                    TxtInput(Count).Text = Rs.Fields _
                    (Count)
                End If
             Next Count
                Rs.Close
                dbs.Close
                Exit Sub
            End If
           .MoveNext
    Loop
            MsgBox "لايوجد ما تبحث عنه "
    End With

End Sub

خلاص فاضل حاجة صغيره جدا وهى ماذا سيحدث عندما

يضغط المستخدم على أى زر فى PVOutLookBar1

أممممممممممممممم

أليك الكود الخاص بذلك

Private Sub PVOutlookBar1_ItemClick(ByVal Group _
As OUTLOOKBARLibCtl.IPVOutlookGroup, ByVal Item _
As OUTLOOKBARLibCtl.IPVOutlookItem)
Select Case PVOutlookBar1.CurrentGroupIndex
    Case 0
        Select Case PVOutlookBar1.CurrentGroup _
        .CurrentItem.Index
            Case 0
                UnLoadControl
                Kind_Of_Opration = "Add Saek"
                LoadControl "Add Saek"
            Case 1
                UnLoadControl
                Kind_Of_Opration = "Add Care"
                LoadControl "Add Care"

            Case 2

            Case 3

            Case 4

            Case 5

            Case 6

            Case 7

            Case 8


        End Select
    Case 1
        Select Case PVOutlookBar1.CurrentGroup. _
        CurrentItem.Index
            Case 0
                UnLoadControl
                Kind_Of_Opration = "View Saek"
                LoadControl "View Saek"

            Case 1

            Case 2

            Case 3

            Case 4

            Case 5

            Case 6

            Case 7

            Case 8

            Case 9


        End Select
    Case 2
        Select Case PVOutlookBar1.CurrentGroup. _
        CurrentItem.Index
            Case 0
                frmAbout.Show
            Case 1

            Case 2

            Case 3

            Case 4
                Set Rs = Nothing
                End

        End Select
    Case 3
        Select Case PVOutlookBar1.CurrentGroup. _
        CurrentItem.Index
            Case 0

            Case 1

            Case 2

            Case 3

            Case 4

            Case 5

            Case 6

            Case 7

            Case 8

            Case 9


        End Select
End Select

End Sub

طبعا معظم الاجراءات لم تكتمل ولكن سنكملها لاحقا

يتبقى نقطه واحده ماذا يحدث عند الضغط على زر موافق

أو زر إلغاء

بسيطه

Private Sub cmdOK_Click()
Select Case Kind_Of_Opration
Case "Add Saek"
      AddNew App.Path & "datamydata.mdb", "Add Saek"

Case "View Saek"
      ViewOne App.Path & "datamydata.mdb", "Saek", _
      Trim(TxtInput(0).Text)
Case "Add Care"

Case "View Care"
' بقية الحالات سنكملها لاحقا



End Select

End Sub

Private Sub CmdCancle_Click()
    UnLoadControl
End Sub

المثال كــــــــــــــــــــــــاملاً

#27

Wonderful

(f)

#28

اشكرك استاذ رمضان علي هذه الدروس القيمة وجزاك الله الف خير

ولكن لدي سؤال من أين يمكنني تحميل أدوات UltraSuite30

#29

أشكرك يا استاذ رمضان علي هذه الدروس القيمة وجزاك الله الف خير

ولكن لدي سؤال من أين يمكنني تحميل ادوات UltraSuite30 علما أنها غير موجودة في جهازي فارجوا وضع رابط لها أو ارسالها علي البريد التالي :

hmaster9@hotmail.com

#31

رائـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــع

#32

الأخ / رمضان

نحييك ونقدر مجهودك العظيم .. لك منا الشكر الجزيل

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#33

تحياتي للجميع

قمت بتنزيل أداة Active Skin4 من موقع الشركة المنتجة , هل هناك طريقة لتلافى الرسالة المتكررة التى تظهر فى كل مرة يتم تشغيل برنامج لهذه الأداة والتي تفيد أن نسخة الأداة تجريبية وغير مرخصة.

قمت أيضا بتنزيل مجموعة أدواتItinfragistics UltraSuite30

من موقع الشركة المنتجة, هل يمكن الحصول على CD-Key لتلافى تنصيب المجموعة كنسخة تجريبية.

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#34

يمكنكم تحميل الادوات من مكتبه البرامج بالموقع

وذلك بالذهاب إلى الصفحة الرئيسيه والضغط على رابط مكتبة البرامج

أو من هذا الرابط

#35

الاخ رمضان المحترم

بارك الله فيك وبعطائك

ارجو تزويدي بامثله بسيطه عن الاوراكل

وخاصه اني ادرس جميع مواضيعك واتمتع بها

ولكن عمليه التعليم للاوراكل ارجو ان تكون منفصله

حتى يتمكن المستخدم من ترتيب المعلومات لتواصلها

مع الشكر الجزيل

اخوكم

فؤاد بطارنه

المملكه الاردنيه الهاشميه - الاردن

جامعه العلوم والتكنولوجيا الاردنيه

مركز الحاسب الالكتروني

بريدي الالكتروني

e-mail

batarneh@just.edu.jo

#37

الفكره رائعه جدا

أرجو أن يكون الشرح تفصيلي حتى نتمكن من المتابعه بصوره جيده

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

#38

الأخ / رمضان

عند تشغيل البرنامج ظهرت الرسالة التالية:

AdoError.gif

أرجو التوضيح .. ولك تحياتى

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#39

أخى abduljawaad saad هل هذا الخطأ من كود المثال المرفق مع الشرح ؟ أم من الكود الذى كتبته انت ؟ ومن أين قمت بتحميل الادوات ؟

#40

شكرا لك يا استاذ رمضان على هذا المجهود الرااااااااااااااااائع حقا

ملاحظة/

يا اخ عبد الجواد سعد

المثال(البرنامج) شغاااااااااااااااال زي الحلاوة

ولا غبار عليه

تحياتي للجميع

اسكنك الله فسيح جناته يا استاذ رمضان (بعد عمر طويل)

ان شااااااااااااااااااء الله

#41

الأخ رمضان .. لك تحياتي

قمت بتشغيل المثال كما هو ولم أضف أى شي وإتبعت تعليمات المثال بخصوص إضافة الأدوات الجديدة

قمت بإنزال حزمة أدوات UltraSuite301 من الموقع

http://www.infragistics.com/process/dlcenter.asp?id=15

وأداة ActiveSkin 4 من الموقع

http://www.softshape.com/download/activeskin.zip

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#42

استاذ رمضان

الصراحة انا تحمست جداااااااااااا لهذا الموضوع

وماشاء الله عليك عندك اسلوب جيد في وضع وشرح وتوضيح المعلومات والدروس

لذا

اطلب منك استاذي الكريم ان تتكرم علينا بوضع الدرس التالي (الرابع)

لكي تعم الفاااااااااااائدة للجميع

مع العلم انني بامس الحاجة لهذه الدروس وخاصة في هذه الايام

كراما لا امر اطال الله في عمرك

تحياتي للجميع

واسف على التطفل :P

(f) الدولار(f)

#43

الأخ رمضان

من فضلك الإطلاع على هذا:

http://arabteam.nicmatic.com/vb/showthread...p?threadid=8972

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#44

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

الحمد والشكر لله الذي هيّئ لنا الأخ الكريم رمضان ليكون لنا خير أستاذ ومعين على تعلّم برمجة قواعد البيانات ..

الحقيقة أنّي أدين لك أخي رمضان بالكثير، وكم أنا متلهّف لمتابعة دروسك الهامة جدّاً ،،،

ولي سؤال حول الكود لو تكرمت علي :

بالنسبة للإجراء ViewOne لماذا لم تستخدم عبارة SELECT ضمن SQL لكي تبحث عن السجل المطلوب وقمت بتشغيل حلقة DO ..LOOP بدلاً منها ؟

واذا كان هذا برأيك أفضل (لو تكرمت أن تبين السبب) فلماذا فتحت ال RecordSet ك SnapShot ؟ فقد خانني ذكائي في معرفة الفائدة من ذلك !!

هل ياترى تصبح عملية البحث أسرع ؟

وفي حال وجود عدد ضخم من السجلات (مليون سجل مثلاً) هل تبقى الطرق التي استخدمتها الآن ناجعة ؟ أن أنتظر الدروس اللاحقة ففيها بعض الأجوبة لأسئلتي ؟؟

مع جزيل الشكر ، وتفضل بقبول وافر الشكر والإحترام ،،،

ملاحظة : لم أتمكن من انزال مجموعة الأدوات Infragistics OutLookBar اذ أنّ حجمها 39 ميغا ، حيث يستغرق تحميلها على شبكتنا مايقراب 6-7 ساعات في أفضل الأحوال وعند عدم وجود ضغط على الشبكة !!!

(f) (f) (f) (f) (f) (f) (f)

#45

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

References.jpg

هل بيانات هذه الشاشة ( DBDAO.vbp- References) مضبوطة؟

أنا آسف للإزعاج .. وأرجو المساعدة

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#46

أخى عبد الجواد بصراحه انا حزين جدا انك واجهت مشاكل مع الادوات أو مع البرنامج وعموما صوره المراجع التى إستخدمتها سليمه

أما إن كانت المشاكل من الاداه PVOutLookBar فيمكنك الاستغنا عنها والإستعاضه عن ذلك بعمل قوائم لتحل محلها

ووضع الكود فى مكانه المناسب

#47

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

ربما لم تنتبه إلى ردي السابق أخ رمضان ...;)

#48

يا استااااااااااااااااااااذ رمضاااااان

ارجوووووووووووووووووك تابع الموضوع

نحن بإنتظارك على احر من الجمر © © © :'( © © ©

#49

الأخ/ رمضان

أعلم أني زودتها شوية.. لكن لحرصي الشديد على الإستفادة من برنامجك وخبرتك, أحب أن أسأل سؤال جديد .. داخل الكود عندما أستعرض خواص الأداة PVOutlookBar1 عن طريق الشاشة المنبثقة , لا أجد الخاصية Groups.. فلماذا ؟ وأعتقد أن عدم وجود هذه الخاصية هو الذى يجعل البرنامج يتوقف عند ترجمة الكود. لقد قمت بتنصيب مجموعه أدوات Ultra Suite 3.01 مرة أخرى لعل الوضع يتغير ولكن دون جدوى

Groups1.jpg

Groups2.jpg

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#50

أخى الفاضل Mr.Z

معزرة فلم اتنبه لسؤالك فعلا

وكما ذكرت يمكن إستخدام SELECT كما ذكرت وهو الافضل وسيأتى إستخدامها لاحقا

ولاحظ ان ان موضوعا تعليميى أى نحاول أن نتعرض لمعظم الطرق حتى يستنى لكل من

يتابعنا أن يٌلم بمعظمها

أما لماذا فتحت ال RecordSet ك SnapShot ؟ فمن المعلوم ان الوضع الإفتراضى لفتح

الـ RecordSet هو ك Table وفى هذه الحاله يمكنك تحديث البيانات أو إضافة بيانات جديده

وفى حلتنا التى إستخدمنا فيها هذه الطريقه أننا نريد الإستعلام فقط

والهدف الثانى الإلمام بمعظم الطرق على قدر المستطاع

وأحييك على المتابعه والإسئله

========================

أخى عبد الجواد بصراحه مش عارف أقولك أيه يبدو ان هناك حلقه مفقوده بيننا فى الحوار

وعموما يمكنك إستبدال هذه الاداه بمجموعه من القوائم كما فى المجموعات وتستبدل العناصر التى تحت كل مجموعه بقوائم فرعيه

وبدلا من الكود الموجود فى حدث PVOutlookBar1_ItemClick

أن تضع الكود المناسب فى حدث Menu_Click

وربما يكون ذلك أفضل

هذا الموضوع مغلق.

مواضيع مشابهة