![]() |
|
الدرس الثاني والعشرون - البحث عن البضائع - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113) +---- قسم : دورة بناء برنامج لإدارة السوبر ماركت من الألف إلى الياء (http://vb4arb.com/vb/forumdisplay.php?fid=128) +---- الموضوع : الدرس الثاني والعشرون - البحث عن البضائع (/showthread.php?tid=5710) |
الدرس الثاني والعشرون - البحث عن البضائع - RaggiTech - 15-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته . البحث عن البضائع . سنحاول بإذن الله خلال هذه الدروس اتمام عملية البحث الموجودة في القائمة ، وسوف نقوم بجعل المستخدم يتحكم في كامل شروط البحث . نحتاج في هذه الشاشة إلى زر للبحث ، زر لاغلاق الشاشة ، أداة جدول لعرض النتائج ، مربع نص لكتابة قيمة البحث . اضافة لذلك نحتاج إلى Combo1 لنحدد هل نريد البحث في الاسم ، المصنع ، الكمية ... الخ ، وأيضاً Combo2 لنعرف شرط البحث - في الحالة الرقمية - أكبر من ، أصغر من ، = .
سنجعل هذا الفورم MDICHild ، وفي أمر اظهاره في الفورم الرئيسي سنكتب :
كود : [align=right]If T1.RecordCount = 0 Thenوالآن سننشأ حدث Create_Flex والذي ستكون مهمته تكوين الجدول ، وهو نفس الكود الذي قمنا بكتابته في Frm_Show دون أي تغيير ، اللهم ما عدا أن السطر التالي :
كود : [align=right]MSFlexGrid1.Rows = T4.RecordCount + 1[/align]سيتحول إلى :
كود : [align=right]On Error Resume Nextوسبب هذا أننا سنستدعي الأمر في حالة كون القاعدة مغلقة مما يسبب الخطأ رقم 3420 ، وهذا الكود لعدم اظهار رسالة خطأ .
وبهذا يصبح الكود الكامل : كود : [align=right]Sub Create_Flex()من أجل هذا سنكتب في حدث Form_Load :
كود : [align=right]Me.Width = 5625ومن ثم نضيف العناصر المناسبة إلى Combo1 و Combo2 :
كود : [align=right]Combo1.AddItem "اسم البضاعة"والآن لنر أمراً ما ، ففي حالة اختار المستخدم البحث عن اسم البضاعة أو المصنع أو النوع فليس ثم خيار من
Combo2 إلا (=) لأن البيانات في هذه الحالة نصية فلن نستخدم < و > .
من أجل هذا نكتب الأمر التالي في حدث Combo1_Click :
كود : [align=right]If Combo1.ListIndex <> 3 And Combo1.ListIndex <> 4 Thenالحدث الثاني الذي سننشأه هو حدث Refresh_Me ، ولن نغير في الحدث الموجود في Frm_Show إلا نقطتين رئيسيتين :
* النقطة الأولى : سنزيل كل الأوامر التي كانت مخصصة لتعبئة القائمة بالبيانات . * النقطة الثانية : سنغير جملة الاستعلام . لو نتذكر أمر الاستعلام السابق : كود : [align=right]SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.number")
سنزيله ، ونستدعي بدلاً منه حدثاً اسمه Search تكون مهمته تكوين جملة الاستعلام ، ومن أجل ذلك يصبح كود الحدث بالشكل التالي : كود : [align=right]Public Sub Refresh_Me()يتبع ...
الدرس الثاني والعشرون - البحث عن البضائع - RaggiTech - 15-10-12 والآن سنرى كيف نقوم بعمل أمر
Search .
في البداية تعتمد جملة الاستعلام على المحدد من Combo1 لذا سنقوم بعمل جملة Select بالشكل التالي :
كود : [align=right]Select Case Combo1.ListIndexوجميع جمل الاستعلام ستنبى على الجملة الاساسية التي كانت بالشكل التالي :
كود : [align=right]SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.number"[/align]إلا أننا سنضيف شرط البحث في آخر هذه الجملة .
من أجل ذلك تكون جملة البحث عن Name أي الحالة الأولى :
كود : [align=right]SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.number and tb_product.name='" & Text1.Text & "'"[/align]* لاحظ أننا لا بد أن نكتب tb_product.name= لأن الاسم الذي نبحث عنه هو اسم البضاعة من Tb_Product .
والحالة الثانية أي البحث عن النوع : كود : [align=right]SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.number and tb_category.name='" & Text1.Text & "'"[/align]* لاحظ أننا هنا بحثنا عن Name ولكنه من جدول الأنواع .
والحالة الثالثة أي حالة البحث عن المصنع : كود : [align=right]SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.number and tb_factory.name='" & Text1.Text & "'"[/align]أما الحالتين الأخريتين فليس الشرط (=) هو الموجود دائماً ، بل إنه يمكن أن يكون < أو > ، وهذا يعتمد على قيمة Combo2 ، ولهذا تكون جملة الاستعلام في الحالة الرابعة :
كود : [align=right]SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.number and count" & Combo2.Text & Val(Text1.Text)[/align]وفي الحالة الأخيرة تكون جملة الاستعلام :
كود : [align=right]SQL = "select tb_product.*,tb_category.*,tb_factory.* from tb_product,tb_factory,tb_category where tb_product.category=tb_category.number and tb_product.factory=tb_factory.number and price" & Combo2.Text & Val(Text1.Text)[/align]والله الموفق ...
والسلام عليكم ورحمة الله وبركاته . |