منتدى برامج نت | برامج نت | دليل المواقع | العاب فلاش | برامج | عيادة الطب | Free software
العاب افلام موقع منتديات

المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : برمجة Dao من خلال فيجوال بيسك (4/4)


mido_kholy
10-13-2006, 12:02 AM
بسم الله الرحمن الرحيم .

المقدمة :
في الدروس السابقة تعلمنا كيفية فتح قاعدة البيانات والتعامل معها ، العرض في الجدول MSFlexGrid ، والآن سوف نقوم بالبحث من خلال احدى جمل الاستعلام ، من المفضل مراجعة دروس TSQL في الموسوعة إذا لم تكن قد تعرفت على جملة Select من جمل الاستعلام قبل البدء بقراءة هذا الدرس .

الدرس :

تذكير سريع بجملة Select .

من أشهر جمل الاستعلامات هي الجملة التي تستخدم الكلمة المفتاحية Select . وصيغتها القياسية هي :


select field(s) form table(s) where conditon


حيث أن Fields تعني الحقول التي تظهر نتيجتها في البحث ، وقد تكون اسماء حقول مثل name,tele أو قد تكون * لعرض الكل ، وقد تكون نواتج عملية حسابية مثل Max(number) أو Count(*) .
أما Tables فهي اسماء الجداول ، والشروط فهي مثل name='ahmed' و age>5 ، مع استخدام معاملات اخرى مثل between و Like ، وبارميترات Parmeters مختلفة مثل ? و - وغيرها .
وأخيراً اذكرك بأنه عند التعامل مع النصوص فإنه لا بد من وضع '' حول الاسم ، ومع التواريخ يتم وضع ## حول التاريخ وهما النوعان الأكثر استخداماً ، أما الارقام فلا تحتاج إلى اي شيء .

والآن إلى بداية الدرس .
سوف نضيف أولاً الجزء الخاص بشاشة البحث ، سوف يكون بالشكل التالي :

البحث عن الأشخاص الذين لديهم ( ComboBox1 ) ( ComboBox2 ) ( searchText )

* إذا لم تظهر الجملة السابقة مرتبة فهذا راجع إلى اتجاه الكتابة .


حيث سيحتوي ComboBox1 على ( الرقم - الاسم - الهاتف ) أما الثاني فيحتوي على ( = - > - < ) ، وتوضع كلمة البحث في ال searchText .
ومن ثم يوضع زر أمر بعرض نتائج البحث في الجدول .

في حدث Form_Load سوف نضيف العناصر المطلوبة للقائمتين :

Combo1.AddItem "الرقم"
Combo1.AddItem "الاسم"
Combo1.AddItem "الهاتف"
Combo1.ListIndex = 0
Combo2.AddItem "="
Combo2.AddItem ">"
Combo2.AddItem "<"
Combo2.ListIndex = 0

ولا بد من التحكم في القائمة الثانية ، حيث لا يمكن التحكم بها إلا عند اختيار الرقم ، أما الاسم والهاتف فلا يمكن البحث ب < أو > في مثالنا هذا - يمكن استخدامها ولكن ليس في مثل هذا المثال - . ويتم ذلك من خلال الحدث Click للاداة Combo1 :

Private Sub Combo1_Click()
If Combo1.ListIndex <> 0 Then
Combo2.Enabled = False
Else
Combo2.Enabled = True
End If
End Sub

في بداية زر الامر سوف نتأكد من أنه ادخل كلمة للبحث عنها :

If searchText.Text = "" Then
MsgBox "نص البحث فارغ"
Exit Sub
End If

لاحقاً سوف نشكل جملة الاستعلام ، وذلك بالشكل التالي :

Dim fldname As String
Dim op As String
Dim lst As String

If Combo1.ListIndex = 0 Then
fldname = "nu"
op = Combo2.Text
lst = ""
ElseIf Combo1.ListIndex = 1 Then
fldname = "fn"
op = "='"
lst = "'"
Else
fldname = "te"
op = "="
lst = ""
End If

Dim sql As String
sql = "select * from tb where " & fldname & op & searchText.Text & lst

حيث نخزن في fldname الحقل الذي نبحث عنه ، op معامل البحث ، واخيراً lst تحدد إذا ما كنا سوف نضيف ' من أجل النصوص .
والآن جاء دور تنفيذ جملة الاستعلام على قاعدة البيانات D1 ومن خلال الجدول الاضافي T2 :

Set T2 = D1.OpenRecordset(sql, dbOpenDynaset)

وأخيراً سوف نقوم بملء الجدول من خلال استدعاء Fill_Table .

fill_Table

خاتمة :
بنهاية هذا الدرس نكون قد تعلمنا إحدى جمل الاستعلام وهي جملة Select ، لا زلت افضل ان تتم مراجعة دروس الاستعلام في الموسوعة .
وبقي أن اذكرك بإن جمل الاستعلام لا تعمل جميعها على هذه الطريقة من الاتصال بقاعدة البيانات بنفس الطريقة ، جرب مثلاً استخدام جمل مثل جمل Delete وستظهر لك رسالة خطأ .
Invalid Operation


في هذا السلسلة البسيطة من الدروس تعرفنا على اساسيات التعامل مع Dao من خلال فيجوال بيسك Visual Basic مع قواعد بيانات Access
وهذا هو ملف العمل ، الحجم التقريبي = 7 kb على هذا الرابط (http://www.sendspace.com/file/q5l4d7)
أسأل الله أن أكون قد وفقت في هذا الشرح البسيط ، فما كان فيه من صواب فمن الله ، وما كان من خطأ فمن نفسي والشيطان ، والله الهادي إلى سواء السبيل .
والسلام عليكم ورحمة الله وبركاته .

veto_44
10-13-2006, 12:17 AM
بارك الله فيك اخي ميدو على اتمام هذا العمل الرائع
والمبارك بوقت قصير جدا جزاك الله عنا كل خير
ووفقك الى الخير دائما لك خالص التقدير والاحترام .

mido_kholy
10-13-2006, 12:21 AM
العفو يا اخ محمود المهم الاستفادة للجميع انشاء الله

حمادة دراز
11-21-2006, 11:04 PM
مشكوررررررررررررر جداااااااااااااااااا

osama_anwar_001122
12-01-2006, 01:03 AM
مشكوررررررررر

no4denmark
12-01-2006, 06:30 PM
جزاك الله خيرا اخى الكريم

Euro
12-12-2006, 11:03 PM
حاجة حلوة قوي

Euro
12-13-2006, 03:43 PM
This is very good , Thanks

خالد صديق
09-19-2007, 09:59 PM
مشكور اخي علي هذا الجهد الطيب
لك كل التقدير
في انتظارالمزيد ...

آسيهي
09-20-2007, 12:50 PM
شكراً على هذا الشرح ولكن الرابط لا يعمل
شكـــــــــــــــــراً

سجلوني
09-20-2007, 01:01 PM
http://i20.servimg.com/u/f20/11/37/80/30/hassen10.gif