الحلقة السادسة
العمليات الأساسية على السجلات للكائنات
وهي العمليات الأساسية على قاعدة البيانات باستخدام الكائن DAO
نراجع سريعا الخطوات السابقة
1 – تصميم النموذج ووضع مربعات النصوص اللازمة
2 – تعريف كائن قاعدة البيانات في مرجع البرنامج MICROSOFT DAO 3.51
3 – تعريف متغيرات تعبر عن كائنات قاعدة البيانات وهنا يفضل إنشاء ملف برمجة لتعريف متغير قاعدة البيانات وتعريف متغيرات تعبر عن الجداول حيث تضع متغير لكل جدول تريد استخدامه
4 – تقوم بفتح قاعدة البيانات في حدث Form_load للشاشة الرئيسية للبرنامج
وهيا بنا إلى العمليات الرئيسية على قاعدة البيانات
كود إضافة سجل جديد
لإضافة سجل جديد إلي قاعدة البيانات نكتب الكود التالي اضغط على زر إضافة مرتين يجب أولا فتح فتح الجدول المطوب التعامل معه باستخدام الجملة
CODE
CODE: |
0001
0002
|
Set rs = db1.OpenRecordset(\"st_inf\", dbOpenDynaset)
|
2 – التأكد أن مربعات النصوص غير خالية باستخدام الكود التالي
CODE
CODE: |
0001
0002
0003
0004
|
If Txt1.Text = \"\" or Txt2.Text = \"\" or Txt3.Text = \"\" or Txt4.Text <> \"\" or Txt5.text = \"\" Then
MsgBox \"يجب إدخال القيم في مربعات النص\"
Exit Sub
End If |
3 – التأكد من أن الجدول به سجلات أم لا باستخدام الكود التالي بحيث انه إذا كان به سجلات يتم البحث عن السجل الحالي موجود أو غير موجود حتى نضمن عدم تكرار السجلات داخل الجدول فإذا كان الجدول خالي من السجلات يتم الانتقال لجملة لتعبئة السجل الجديد مباشرة
CODE
CODE: |
0001
|
If rs.Recorcount = 0 then go to ss |
2 – إذا كان يوجد سجلات داخل الجدول يتم التأكد هل رقم الطالب الحالي (السجل الحالي) موجود أم لا فإذا كان موجودا يتم تعديله أو أي إجراء آخر وإلا يذهب إلى العنوان ss لإضافة سجل جديد
CODE
CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
|
rs.MoveFirst
Do While Not rs.EOF
If Not rs.EOF Then
If rs![st_no] = Val(Txt1) Then
r = MsgBox\"السجل موجود من قبل هل تريد التعديل\") ,vbYesNo\"تعديل\")
If r = vbYes Then
rs.Edit
rs![st_no] = Val(Txt1)
rs![st_name] = Txt2
rs![address] = Txt3
rs![b_date] = Txt4
rs![phone] = Txt5
rs.Update
MsgBox \"تم تعديل السجل \"
cmdclear_Click 'استدعاء حدث النقر على زر المسح
Else
Txt1.SetFocus
Exit Sub
End If
Exit Sub
End If
End If
rs.MoveNext
Loop |
تعديل السجلات
لتعديل سجل معين نستخدم الكود التالي اضغط على زر تعديل مرتين
CODE
CODE: |
0001
0002
0003
0004
0005
0006
0007
|
rs.Edit
rs![st_no] = Val(Txt1)
rs![st_name] = Txt2
rs![address] = Txt3
rs![b_date] = Txt4
rs![phone] = Txt5
rs.Update |
الكود الكامل لحفظ وتعديل السجلات (زر حفظ /تعديل )
هذا الكود للإضافة والتعديل معا وهذا الكود يمكن استخدامه بصورة عامة في أي زر إضافة
CODE
CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
|
Dim r As String
If Txt1.Text = \"\" Or Txt2.Text = \"\" Or Txt3.Text = \"\" Or Txt4.Text = \"\" Or Txt5.Text = \"\" Then
MsgBox (\"من فضلك اكمل البيانات\")
Txt1.SetFocus
Exit Sub
End If
If rs.RecordCount = 0 Then GoTo Ss
rs.MoveFirst
Do While Not rs.EOF
If Not rs.EOF Then
If rs![st_no] = Val(Txt1) Then
r = MsgBox\"السجل موجود من قبل هل تريد التعديل\") ,vbYesNo\"تعديل\")
If r = vbYes Then
rs.Edit
rs![st_no] = Val(Txt1)
rs![st_name] = Txt2
rs![address] = Txt3
rs![b_date] = Txt4
rs![phone] = Txt5
rs.Update
MsgBox \"تم تعديل السجل \"
cmdclear_Click 'استدعاء حدث النقر على زر المسح
Else
Txt1.SetFocus
Exit Sub
End If
Exit Sub
End If
End If
rs.MoveNext
Loop
Ss:
rs.AddNew
rs![st_no] = Val(Txt1)
rs![st_name] = Txt2
rs![address] = Txt3
rs![b_date] = Txt4
rs![phone] = Txt5
rs.Update
cmdclear_Click 'استدعاء حدث النقر على زر المسح حذف سجل محدد
|
كود حذف سجل
لحذف سجل محدد يكتب الكود التالي
CODE
CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
|
Dim r As Integer
r = MsgBox\"هل تريد حذف السجل الحالي\") ,vbYesNo,( \"الحذف\"
If rs.RecordCount = 0 Then
MsgBox \"لا يوجد سجلات داخل الجدول \"
Exit Sub
End If
If r = vbYes Then
Do While Not rs.EOF
If rs![st_no] = Val(Txt1) Then
rs.Delete
rs.Fields.Refresh
If rs.RecordCount = 0 Then
MsgBox \"لا يوجد سجلات داخل الجدول \"
Exit Sub
End If
rs.MoveFirst
Txt1.Text = rs![st_no]
Txt2.Text = rs![st_name]
Txt3.Text = rs![address]
Txt4.Text = rs![b_date]
Txt5.Text = rs![phone]
Exit Sub
End If
rs.MoveNext
Loop
Else
Txt1.SetFocus
Exit Sub
End If
|
كود البحث باستخدام جملة
للبحث عن سجل معين باستخدام جملة FINDfirst
للبحث عن سجل باستخدام جملة FIND يتم كتابة الكود التالي :
يتم تعريف متغير نصي في أعلى النموذج منطقة تعريف المتغيرات كالتالي
CODE
CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
|
Dim name as string 'لاستخدام القيمة التي تخزن فيه للبحث عن السجل التالي
ثم يتم كتابة الكود التالي
CODE
Dim prompt As String
Dim title As String
Dim s As String
Dim y As String
Prompt = \"ادخل اسم الطالب\"
Title = \"البحث\"
y = InputBox(prompt, title) القيمة التي يدخلها المستخدم تخزن في المتغير
If Len(y) = 0 Then إذا كان طول المتغير يساوي صفر بمعنى أن المستخدم لم يدخل اسم للبحث
Exit Sub
Else
name = y
s = \"st_name=' \" + y + \" ' \"
rs.FindFirst s جملة البحث عن السجل الأول الذي يمثل الاسم الذي أدخله المستخدم
If rs.NoMatch Then تستخدم هذه الجملة للتحقق من العثور على الاسم أم لا
MsgBox \" الاسم غير موجود\"
Else
Txt1 = rs![st_no]
Txt2 = rs![st_name]
Txt3 = rs![address]
Txt4 = rs![b_date]
Txt5 = rs![phone]
End If
End If
كود البحث عن السجل التالي باستخدام FindNext
للبحث عن السجل التالي باستخدام جملة FIND
CODE
Dim s As String
s = \"st_name=' \" + nam + \" ' \"
rs.FindNext s
If rs.NoMatch Then
MsgBox \"انتهى البحث\"
Else
Txt1.Text = rs![st_no]
Txt2.Text = rs![st_name]
Txt3.Text = rs![address]
Txt4.Text = rs![b_date]
Txt5.Text = rs![phone]
End If
البحث باستخدام جملة DO WHILE
للبحث عن سجل باستخدام جملة DO WHILE نكتب الكود التالي :
CODE
Dim a As String
a = InputBox(\"ادخل اسم الطالب\",\"بحث\")
rs.MoveFirst
Do While Not rs.EOF 'كرر لنهاية الجدول
If rs![st_name] = a Then
Text1 = rs![St_no]
Text2 = rs![st_name]
Text3 = rs![ address]
Text4 = rs![b_date]
Text5 = rs![phone]
Exit Sub
End If
rs.MoveNext
Loop
التحرك إلى السجل الأول بجملة Movefirst
للتحرك إلى السجل الأول في الجدول وعرضه نكتب الكود التالي :
CODE
If rs.RecordCount = 0 Then
MsgBox \"لا يوجد سجلات داخل الجدول \"
Exit Sub
End If
rs.MoveFirst
Text1 = rs![St_no]
Text2 = rs![st_name]
Text3 = rs![ address]
Text4 = rs![b_date]
Text5 = rs![phone] |
التحرك للسجل الأخيرباستخدام جملة MoveLast
للتحرك للسجل الأخير من الجدول وعرضه نكتب الكود التالي :
CODE
CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
|
If rs.RecordCount = 0 Then
MsgBox \"لا يوجد سجلات داخل الجدول \"
Exit Sub
End If
rs.MoveLast
Text1 = rs![St_no]
Text2 = rs![st_name]
Text3 = rs![ address]
Text4 = rs![b_date]
Text5 = rs![phone] |
التحرك للسجل التالي باستخدام جملة MoveNext
للتحرك للسجل التالي من الجدول وعرضه نكتب الكود التالي :
CODE
CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
|
If rs.RecordCount = 0 Then
MsgBox \"لا يوجد سجلات داخل الجدول \"
Exit Sub
End If
rs.MoveNext
If rs.EOF Then
MsgBox \"هذا هو آخر سجل \"
Exit Sub
End If
Text1 = rs![St_no]
Text2 = rs![st_name]
Text3 = rs![ address]
Text4 = rs![b_date]
Text5 = rs![phone |
التحرك للسجل السابق باستخدام جملة MovePrevious
للتحرك للسجل السابق من الجدول وعرضه نكتب الكود التالي :
CODE
CODE: |
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
|
If rs.RecordCount = 0 Then
MsgBox \"لا يوجد سجلات داخل الجدول \"
Exit Sub
End If
rs.MovePrevious
If rs.BOF Then
MsgBox \"هذا هو أول سجل \"
Exit Sub
End If
Text1 = rs![St_no]
Text2 = rs![st_name]
Text3 = rs![address]
Text4 = rs![b_date] |
والى اللقاء مع الحلقة القادمة مع الكائن الرهيب ADO
تحياتي للجميع
|