الفرعون المحترف
08-10-2006, 11:37 AM
السلام عليكم ورحمة الله وبركاته
اخواني اعضاء برامج نت الكرام اقدم لكم مجموعه دروس لاسس قواعد
البيانات في الفجوال ارجو متبعتها يوجد كل يوم مجموعه من الدروس
الجديده ارجو ان تنال لعجابكم وتجوز على رضاكم وتصل الفائده لكم
بسم الله الرحمن الرحيم
الدرس الاول
كائن الوصول الى المعطيات DAO 3.52
اولا : ابدأ مشروع جديد ومن ثم قم بأضافة كائن الوصول الى المعطيات من خلال القائمة PROJECT-------REFERNCE ومن ثم اختار microsoft DAO 3.52 ومن object library ثم موافق
2- ثانيا
لانشاء كائن قاعدة البينات وكائن مجموعة السجلات قم بكتابة الكود في حدث تحميل الفورم
dim db as database
dim rs as recordset
ثالثا : انشاء اتصال نع قاعدة البينات وتحديد الجدوال
قم بكتابة الكود التالي ايضا في حدث تحميل الفورم
Set db = dbengine.OpenDatabase(App.Path + "\" + "test.mdb")
Set rs = db.OpenRecordset("test", dbopentable)
لاحظ ان كائن قاعدة البيانت قد احدث باستخدام منهج opendatabase للكائن
DBENGINE
الذي سوف اقوم بشرحه لاحقا يمكنك الان استخدام كائن المعطيات لتمثيل قاعدة البيانات في شفرات الفيجوال اما في السطر الثاني فهو لانشاء مجموعة السجلات من نمط مجموعة الديناميكية للجدول تيست اما بالنسبة لاضافة والبحث والتعديل اعتقد انها اصبحت سهلة
فقط عليك استخدام الكائن RS
E.G
RS.ADDNEW
الدرس الثاني
الاتصال مع قاعدة بيانات باستخدام العنصر DATA الموجود في صندوق الاداوت
قم بادراجه على الفورم ومن ثم قم بالاتصال نع قاعدة البيانات وتحديد الجداول من خلال الخاصيتين
DATABASENAME وتسخدم لتحديد مسار قاعدة البيانات
RECORDSOUREC وتستخدم لتحديد الجداول
الطرق والمناهج
يحتوى ال Data Control على مجموعه كبيره من الأوامر والإجرآت ولكن تكون هذه الأوامر تحت
مجموعه أوامر تختص بالمعامله مع السجلات .. وكل هذه الأوامر تكون موجوده فى ال Recordset
فمثلا .. عند كتابتك للكود التالى تجد مجموعه كبيره من الأوامر يمكن الإستفاده منها ..
Data1.Recordset
وهذه الأومر تنقسم إلى مجموعات من حيث الإستخدام.. ونحن هنا سنشرح أهمها ..
مجموعه أوامر متخصصه فى التنقل داخل الجدول من سجل إلى آخر..
1-الأمر MoveNext وهو يمكننا من الإنتقال من السـجـل الحالى إلى
السجل الذى يليه فى الترتيب .. ومثلاً يمكن تنفيذ الأمر بكتابه الكود التلى ..
code:Data1.Recordset.MoveNext
2- الأمر MovePreviousوهو يمكننا من الإنتقال من السجل الحالى
إلى السجل السابق فى التربيب مثلا...
code:Data1.Recordset.MovePrevious
3-الأمر MoveFirst وهو يمكننا من الإنتقال إلى أول سجل فى الجدول ومثلاً ..
code:Data1.Recordset.MoveFirst
4 – الأمر MoveLastوهو يمكننا من الإنتقال إلى آخر سجل فى الجدول ومثلا ..
Data1.Recordset.MoveLast
** وهنالك مجموعه من ال Function و التى ترجع قيم تفيد فى البرمجه وتفحص حالتمعينه ... ومنها:
5 – الإقتران EOFوهو يعنى فحص قيمه ال End of Table أى إذا كان مأشر السجلات يقف الأن على نهايه الجدول .. وهذا ال function يرجع قيمه true
أو false وتكون القيمه المرجعه True إذا كنا نقف على آخر سجل فى الجدول ..
ومثال على كيفيه الإستخدام..
code:If Data1.Recordset.EOF Then
'تقوم بالعمل والإجراء الذى تبريده
End If
6 – الإقتران BOF وهو مثلا الإقتران EOF سوا أنه يفحص إذا كنا موجودين على
السجل الأول ...
7 - الإقتران RecordCount وهذا الإقتران يقوم بإرجاع قيمه تمثلا عدد السجللات فى الجدول ..ويمكن الإستفاده من هذه الداله فى عرض عدد السجالت أو فى أمور أخرى سننافشها فى دروس لاحقه ومثال على إستخدامه :
code:Dim NumberOrRecord As Integer
Data1.Recordset.RecordCount
8- الداله AbsolutePosition وهى ترجع رقم السجل الذى نكون واقفين عليه
( أى يكون المأشر واقف عليه ) ويبدء الترقيم للسجلات من الصفر .. ويمكن إستخدام
الداله فى أمور كثييره ومثلا على كيفيه الإستخدام..
code:Dim PosLoc As Integer
PosLoc = Data1.Recordset.AbsolutePosition
** وايضا توجد هنالك مجموعه من الأوامر التى تهتم بالسجالت من الحيث الأضافه
و التعديل والحذف.. وغيرها..
9- الأمر AddNew وهو يقوم بإضافه سجل جديجد و فارغ إلى الجدول .. وهو يمثل إضافه إلى جدول..ومثال عليه ..
code:data1.Recordset.AddNew
10- الأمر Deleteوهو يقوم بحذف السجل الذى نقف عليه حالياً .. ومثال عليه..
code:data1.Recordset.Delete
11- الأمر .Update وهو يقوم بحفظ التعديلات على القاعده فعلياً عل القرص
الصلب ويكون ذلك بعد إضافه سجل أو التعديل على بيانت سجل .. فيجب حفظ
التعديلات فعلياً.. ولا يمكن إستخدامه بعد أى منها .. وإلا يتسبب خطأ..
code:data1.Recordset.Update
12 – الأمر CancelUpdateويمكن إستخدامه فى حالة أننا أردنا التراجع عن
عمل قمنا بهه على القاعده ..
فمثلاً لو قمنا بإضافه سجل جديد ولكن أردنا أن نتراجع فإننا ننفد هذا الأمر .. أو إذا
أردنا بعد عمليه تعديل على السجل أن نتراجع فيمكن ذلك.. ولكن عند تنفيذ الأمر Update فإننا لن نسنفيد من الإمر ومثال على إستخدامه..
code:data1.Recordset.CancelUpdate
** وأيضاً توجد هنالك مجموعه أوامر تمكننا من البحث فى داخل القعده .. وذلك
فى حاله أن المبرمج لا يعلم لغه ال SQL أو لا يريد إستخدامها.. وهى ..
13- الأمر "FindFirst "the condition as String وهذا الأمر يعنى
إريد أن أبحث من أول الجدول وذلك حسب الشرط الموضوع على شكل String
ويمكن أن يكون هذا الشرط عباره عن إسم مثلاً محمد ويعبر عنها بما يلى ..
code:Data1.Recordset.FindFirst "name='mohmmed'"
ويجب أن يكون قيمه الشرط إذا كان String أن يوضع بين حاصره علويه
واحده مثلا 'moammed' وإذا كان الشرط عباره عن مقارنه قيمه رقميه
فإنه يكون مثلا ..
""ID=3 أى أنه قيمه الحقل الذى إسمه ID أن تكون ثلاثه..
14- الأمر FindLast " the condition as String " وهذا الأمر يكون
مثلا ال FindFirst من حيث الشروط .. لكنه يبدء البحث من أسفل الجدول ...
15- الأمر FindNext يقوم مثلا الأمر FindFirst وذلك حسب شروط البحث ..
ولكنه يبدء البحث من الموقع التالى وبالإتجاه لآخر الجدول للموقع الحالى..
16- الأمر FindPrevioust يقوم مثلا الأمر FindFirst وذلك حسب شروط
البحث ..ولكنه يبدء البحث من الموقع السابق وبالإتجاه لأول الجدول للموقع الحالى..
** وأيضاً يوجد هنالك أمر مهم ليس تابع لمجموعه الأومامر فى ال RecordSet
وهيزز
17- الأمر Refresh له إستخدامان رإيسيان.
الأول فتح قاعدت البيانت فى بدانيه البرنامج أو فى بدايه تحميل الفورم وذلك
لإجراء بعض العمليات عند بدايه التحميل .. كأن يعرض عدد العناصر فى الجدول ..
ومثال عليه ..
code:
Private Sub Form_Load()
' هنا يتم فتح قاعدة البيانت
Data1.Refresh
End Sub
الإستخدام الثانى هو بعد إسناد جمل SQL إلى الخاصيه .. RecordSource
وليتم تحميل السجلات التى تطابق الطلب.. يجب أن نقوم بإستدعاء الأمر ليتم العمل
أى كأننا نقوم بإعدت فتحه وفق الشرط الجديد ومثلا على ذلك المثال التالى ..
' إسناد جملت طلب
Data1.RecordSource = "select * from employee"
' طلب تحديث البيانات المحمله فى ال
' datatControl
Data1.Refresh
اما بالنسبة للبحث وهي الجزء الاهم سوف اقوم بشرحه الان
يستخدم للبحث الغرض FIND ولهذا الغرض اربعة منهاج وهم
FINDFIRST ويستخدم للبحث اعتبارا من السجل الاول
FINDLAST -------------------------الاخير
FINDNEXT ------------------------الحالي والى الامام
FINDPREVIOUS -------------------الخلف
مثال
Data1.Recordset.FindFirst "AMOUNT>100"
Data1.Recordset.FindLast "NAME='HAFAR'"
في السطر الاول قمنا بالبحث على الصفوف التي تحتوى على عدد اصغر من 100
اما في السطلر الثاني فقمنا بالبحث على الموظف الذي اسمه HAFAR
الدرس الثالث
الكائن dbengine
ويمكن من خلال هذا الكائن الاتصال مع قواعد البيانات كما في الدرس الاول
واصلاحها وضغطها ويحتوى على ستة مناهج:
rapairdatabase -------------- ويستخدم لاصلاح قاعدة البيانات
compactdatabase ------------ويستخدم لضغط قاعدة البيانات
registerdatabase -------------ويستخدم لبناء روابط بين مصدر
المعطيات خارجي وقاعدة بيانات
setoption ---------------------ويستخدم لتغيير قيمة او اكثر من
قيم المنهاج السابق
createworkspace -------------ويستخدم لبناء فضاء العمل بهدف
الوصول الى قاعدة بيانات او اكثر
أستخدام منهاج ضغط قاعدة البيانات
DBEngine.CompactDatabase "c:\test.mdb", "d:\test.mdb", dbLangGeneral, dbEncrypt
البارمترات
الاول-----يسستخدم لتحديد قاعدة البيانات المراد ضغطها
الثاني ----يستخد لحفظ قاعدة البيانات المضغوطة
الثالث ----لغة قاعدة البيانات المستخدمة
الرابع ----لتشفير قاعدة لبيانات
استخدام منهاج registerdatabase
يقوم هذا المنهج بتسجيل مصدر معطيات لاستخدام مع قاعدة البيانات وتشجع وثائق المبرمج على الاعتماد على خدمات الاعدادات odbc في لوحة تحكم ويندوز بدلا من استخدام هذا المنهاج ولكن اذا اردت معالجة تسجيل odbc ضمن الفيجوال بيسك فانه بامكانك استخدام هذا المنهج وله البارامترات التالية
sourcename
وهو الاسم الذي سوف يعطى لقاعدة البينات في منهاج opendatabse
drivername
اسم موجه odbc المثبت والمتوفر في محطة العمل
silentflag
اذا اخذ هذا البارمتر القيمة فولس فانه يجبر الويندوز على اظهار صندوق حوار
التسجيل اما اذا اخذ القيمة ترو فان ويندوز سوف يحاول القيام بتسجيل دون اظهار
صتدوق حوار التسجيل
attributelist
ويمكن ان تتضمن اسم المخدم واسم قاعدة البينات او اي بارمتر مطلوب
مثال
dbengine.registerdatabse "dsnname","sql server",false,"server=mca&char(0)&database=pubs&char(0)"
استخدام منها اصلاح قاعدة البيانات
مثال
DBEngine.RepairDatabase "c:\test.mdb"
ارجو ان اكون قد وفقت في ايصال المعلومه لكم
اخواني اعضاء برامج نت الكرام اقدم لكم مجموعه دروس لاسس قواعد
البيانات في الفجوال ارجو متبعتها يوجد كل يوم مجموعه من الدروس
الجديده ارجو ان تنال لعجابكم وتجوز على رضاكم وتصل الفائده لكم
بسم الله الرحمن الرحيم
الدرس الاول
كائن الوصول الى المعطيات DAO 3.52
اولا : ابدأ مشروع جديد ومن ثم قم بأضافة كائن الوصول الى المعطيات من خلال القائمة PROJECT-------REFERNCE ومن ثم اختار microsoft DAO 3.52 ومن object library ثم موافق
2- ثانيا
لانشاء كائن قاعدة البينات وكائن مجموعة السجلات قم بكتابة الكود في حدث تحميل الفورم
dim db as database
dim rs as recordset
ثالثا : انشاء اتصال نع قاعدة البينات وتحديد الجدوال
قم بكتابة الكود التالي ايضا في حدث تحميل الفورم
Set db = dbengine.OpenDatabase(App.Path + "\" + "test.mdb")
Set rs = db.OpenRecordset("test", dbopentable)
لاحظ ان كائن قاعدة البيانت قد احدث باستخدام منهج opendatabase للكائن
DBENGINE
الذي سوف اقوم بشرحه لاحقا يمكنك الان استخدام كائن المعطيات لتمثيل قاعدة البيانات في شفرات الفيجوال اما في السطر الثاني فهو لانشاء مجموعة السجلات من نمط مجموعة الديناميكية للجدول تيست اما بالنسبة لاضافة والبحث والتعديل اعتقد انها اصبحت سهلة
فقط عليك استخدام الكائن RS
E.G
RS.ADDNEW
الدرس الثاني
الاتصال مع قاعدة بيانات باستخدام العنصر DATA الموجود في صندوق الاداوت
قم بادراجه على الفورم ومن ثم قم بالاتصال نع قاعدة البيانات وتحديد الجداول من خلال الخاصيتين
DATABASENAME وتسخدم لتحديد مسار قاعدة البيانات
RECORDSOUREC وتستخدم لتحديد الجداول
الطرق والمناهج
يحتوى ال Data Control على مجموعه كبيره من الأوامر والإجرآت ولكن تكون هذه الأوامر تحت
مجموعه أوامر تختص بالمعامله مع السجلات .. وكل هذه الأوامر تكون موجوده فى ال Recordset
فمثلا .. عند كتابتك للكود التالى تجد مجموعه كبيره من الأوامر يمكن الإستفاده منها ..
Data1.Recordset
وهذه الأومر تنقسم إلى مجموعات من حيث الإستخدام.. ونحن هنا سنشرح أهمها ..
مجموعه أوامر متخصصه فى التنقل داخل الجدول من سجل إلى آخر..
1-الأمر MoveNext وهو يمكننا من الإنتقال من السـجـل الحالى إلى
السجل الذى يليه فى الترتيب .. ومثلاً يمكن تنفيذ الأمر بكتابه الكود التلى ..
code:Data1.Recordset.MoveNext
2- الأمر MovePreviousوهو يمكننا من الإنتقال من السجل الحالى
إلى السجل السابق فى التربيب مثلا...
code:Data1.Recordset.MovePrevious
3-الأمر MoveFirst وهو يمكننا من الإنتقال إلى أول سجل فى الجدول ومثلاً ..
code:Data1.Recordset.MoveFirst
4 – الأمر MoveLastوهو يمكننا من الإنتقال إلى آخر سجل فى الجدول ومثلا ..
Data1.Recordset.MoveLast
** وهنالك مجموعه من ال Function و التى ترجع قيم تفيد فى البرمجه وتفحص حالتمعينه ... ومنها:
5 – الإقتران EOFوهو يعنى فحص قيمه ال End of Table أى إذا كان مأشر السجلات يقف الأن على نهايه الجدول .. وهذا ال function يرجع قيمه true
أو false وتكون القيمه المرجعه True إذا كنا نقف على آخر سجل فى الجدول ..
ومثال على كيفيه الإستخدام..
code:If Data1.Recordset.EOF Then
'تقوم بالعمل والإجراء الذى تبريده
End If
6 – الإقتران BOF وهو مثلا الإقتران EOF سوا أنه يفحص إذا كنا موجودين على
السجل الأول ...
7 - الإقتران RecordCount وهذا الإقتران يقوم بإرجاع قيمه تمثلا عدد السجللات فى الجدول ..ويمكن الإستفاده من هذه الداله فى عرض عدد السجالت أو فى أمور أخرى سننافشها فى دروس لاحقه ومثال على إستخدامه :
code:Dim NumberOrRecord As Integer
Data1.Recordset.RecordCount
8- الداله AbsolutePosition وهى ترجع رقم السجل الذى نكون واقفين عليه
( أى يكون المأشر واقف عليه ) ويبدء الترقيم للسجلات من الصفر .. ويمكن إستخدام
الداله فى أمور كثييره ومثلا على كيفيه الإستخدام..
code:Dim PosLoc As Integer
PosLoc = Data1.Recordset.AbsolutePosition
** وايضا توجد هنالك مجموعه من الأوامر التى تهتم بالسجالت من الحيث الأضافه
و التعديل والحذف.. وغيرها..
9- الأمر AddNew وهو يقوم بإضافه سجل جديجد و فارغ إلى الجدول .. وهو يمثل إضافه إلى جدول..ومثال عليه ..
code:data1.Recordset.AddNew
10- الأمر Deleteوهو يقوم بحذف السجل الذى نقف عليه حالياً .. ومثال عليه..
code:data1.Recordset.Delete
11- الأمر .Update وهو يقوم بحفظ التعديلات على القاعده فعلياً عل القرص
الصلب ويكون ذلك بعد إضافه سجل أو التعديل على بيانت سجل .. فيجب حفظ
التعديلات فعلياً.. ولا يمكن إستخدامه بعد أى منها .. وإلا يتسبب خطأ..
code:data1.Recordset.Update
12 – الأمر CancelUpdateويمكن إستخدامه فى حالة أننا أردنا التراجع عن
عمل قمنا بهه على القاعده ..
فمثلاً لو قمنا بإضافه سجل جديد ولكن أردنا أن نتراجع فإننا ننفد هذا الأمر .. أو إذا
أردنا بعد عمليه تعديل على السجل أن نتراجع فيمكن ذلك.. ولكن عند تنفيذ الأمر Update فإننا لن نسنفيد من الإمر ومثال على إستخدامه..
code:data1.Recordset.CancelUpdate
** وأيضاً توجد هنالك مجموعه أوامر تمكننا من البحث فى داخل القعده .. وذلك
فى حاله أن المبرمج لا يعلم لغه ال SQL أو لا يريد إستخدامها.. وهى ..
13- الأمر "FindFirst "the condition as String وهذا الأمر يعنى
إريد أن أبحث من أول الجدول وذلك حسب الشرط الموضوع على شكل String
ويمكن أن يكون هذا الشرط عباره عن إسم مثلاً محمد ويعبر عنها بما يلى ..
code:Data1.Recordset.FindFirst "name='mohmmed'"
ويجب أن يكون قيمه الشرط إذا كان String أن يوضع بين حاصره علويه
واحده مثلا 'moammed' وإذا كان الشرط عباره عن مقارنه قيمه رقميه
فإنه يكون مثلا ..
""ID=3 أى أنه قيمه الحقل الذى إسمه ID أن تكون ثلاثه..
14- الأمر FindLast " the condition as String " وهذا الأمر يكون
مثلا ال FindFirst من حيث الشروط .. لكنه يبدء البحث من أسفل الجدول ...
15- الأمر FindNext يقوم مثلا الأمر FindFirst وذلك حسب شروط البحث ..
ولكنه يبدء البحث من الموقع التالى وبالإتجاه لآخر الجدول للموقع الحالى..
16- الأمر FindPrevioust يقوم مثلا الأمر FindFirst وذلك حسب شروط
البحث ..ولكنه يبدء البحث من الموقع السابق وبالإتجاه لأول الجدول للموقع الحالى..
** وأيضاً يوجد هنالك أمر مهم ليس تابع لمجموعه الأومامر فى ال RecordSet
وهيزز
17- الأمر Refresh له إستخدامان رإيسيان.
الأول فتح قاعدت البيانت فى بدانيه البرنامج أو فى بدايه تحميل الفورم وذلك
لإجراء بعض العمليات عند بدايه التحميل .. كأن يعرض عدد العناصر فى الجدول ..
ومثال عليه ..
code:
Private Sub Form_Load()
' هنا يتم فتح قاعدة البيانت
Data1.Refresh
End Sub
الإستخدام الثانى هو بعد إسناد جمل SQL إلى الخاصيه .. RecordSource
وليتم تحميل السجلات التى تطابق الطلب.. يجب أن نقوم بإستدعاء الأمر ليتم العمل
أى كأننا نقوم بإعدت فتحه وفق الشرط الجديد ومثلا على ذلك المثال التالى ..
' إسناد جملت طلب
Data1.RecordSource = "select * from employee"
' طلب تحديث البيانات المحمله فى ال
' datatControl
Data1.Refresh
اما بالنسبة للبحث وهي الجزء الاهم سوف اقوم بشرحه الان
يستخدم للبحث الغرض FIND ولهذا الغرض اربعة منهاج وهم
FINDFIRST ويستخدم للبحث اعتبارا من السجل الاول
FINDLAST -------------------------الاخير
FINDNEXT ------------------------الحالي والى الامام
FINDPREVIOUS -------------------الخلف
مثال
Data1.Recordset.FindFirst "AMOUNT>100"
Data1.Recordset.FindLast "NAME='HAFAR'"
في السطر الاول قمنا بالبحث على الصفوف التي تحتوى على عدد اصغر من 100
اما في السطلر الثاني فقمنا بالبحث على الموظف الذي اسمه HAFAR
الدرس الثالث
الكائن dbengine
ويمكن من خلال هذا الكائن الاتصال مع قواعد البيانات كما في الدرس الاول
واصلاحها وضغطها ويحتوى على ستة مناهج:
rapairdatabase -------------- ويستخدم لاصلاح قاعدة البيانات
compactdatabase ------------ويستخدم لضغط قاعدة البيانات
registerdatabase -------------ويستخدم لبناء روابط بين مصدر
المعطيات خارجي وقاعدة بيانات
setoption ---------------------ويستخدم لتغيير قيمة او اكثر من
قيم المنهاج السابق
createworkspace -------------ويستخدم لبناء فضاء العمل بهدف
الوصول الى قاعدة بيانات او اكثر
أستخدام منهاج ضغط قاعدة البيانات
DBEngine.CompactDatabase "c:\test.mdb", "d:\test.mdb", dbLangGeneral, dbEncrypt
البارمترات
الاول-----يسستخدم لتحديد قاعدة البيانات المراد ضغطها
الثاني ----يستخد لحفظ قاعدة البيانات المضغوطة
الثالث ----لغة قاعدة البيانات المستخدمة
الرابع ----لتشفير قاعدة لبيانات
استخدام منهاج registerdatabase
يقوم هذا المنهج بتسجيل مصدر معطيات لاستخدام مع قاعدة البيانات وتشجع وثائق المبرمج على الاعتماد على خدمات الاعدادات odbc في لوحة تحكم ويندوز بدلا من استخدام هذا المنهاج ولكن اذا اردت معالجة تسجيل odbc ضمن الفيجوال بيسك فانه بامكانك استخدام هذا المنهج وله البارامترات التالية
sourcename
وهو الاسم الذي سوف يعطى لقاعدة البينات في منهاج opendatabse
drivername
اسم موجه odbc المثبت والمتوفر في محطة العمل
silentflag
اذا اخذ هذا البارمتر القيمة فولس فانه يجبر الويندوز على اظهار صندوق حوار
التسجيل اما اذا اخذ القيمة ترو فان ويندوز سوف يحاول القيام بتسجيل دون اظهار
صتدوق حوار التسجيل
attributelist
ويمكن ان تتضمن اسم المخدم واسم قاعدة البينات او اي بارمتر مطلوب
مثال
dbengine.registerdatabse "dsnname","sql server",false,"server=mca&char(0)&database=pubs&char(0)"
استخدام منها اصلاح قاعدة البيانات
مثال
DBEngine.RepairDatabase "c:\test.mdb"
ارجو ان اكون قد وفقت في ايصال المعلومه لكم



