الدرس الثالث والعشرون - تقارير البضائع - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (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=5711) |
الدرس الثالث والعشرون - تقارير البضائع - RaggiTech - 15-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته . تقارير البضائع . سنبدأ بإذن الله في هذا الدرس في عمل قائمة التقارير ، وسنقوم تحديداً بعمل تقارير البضائع ، وسنحاول جاهدين من خلال هذا الدرس تطبيق مفهوم المصفوفات ( مصفوفات الأدوات ) والتي نتعامل معها من خلال خاصية Index وسننوه كلما سنحت الفرصة عن كمية الأكواد التي تم اختصارها اعتماداً على المصفوفات . وسنبدأ في البداية بتصميم الفورم . فعن محتويات الفورم فنحتاج إلى قائمة نعرض فيها البضائع ، وأداتي اختيار لتحديد نوع التقرير ( شامل أو بين تاريخين ) ، وبناء عليه سنضع اثنين من أداة MaskedEditBox . سنضع أيضاً زر ( تنفيذ ) لتنفيذ التقرير ، وزر اغلاق للفورم ، كما سنضع أداتي MsFlexGeid ولكن لهما نفس الاسم ، ولها Index يساوي 0 أو 1 . وتختص بعرض عمليات البيع والشراء لهذه البضاعة . ونضع أيضاً خمس مربعات عناوين Labels لنضع فيها معلومات حول البضاعة المختارة في التقرير ( الاسم - المصنع - النوع - الكمية - السعر ) . فيما سؤجل عمليات الاحصائيات إلى درس لاحق إن شاء الله . والآن انتهى التصميم ، ولنبدء في كتابة الكود . في الفورم الرئيسي لن يكون هناك سوى أمر التاكد من وجود بضائع ، ومن ثم معرفة Index القائمة وبناء عليه نظهر الفورم وذلك بالشكل التالي : كود : [align=right]If T1.RecordCount = 0 Then أما في حدث Form_Load للفورم الخاص بالتقرير فسنضبط أولاً خصائص الارتفاع :
كود : [align=right]Me.Width = 4800 ثم نحدد تاريخ اليوم لنضعه في مربعي
MaskEditBox :
كود : [align=right]Dim Myday, Mymonth, Myyear ومن ثم نملئ القائمة بالبضائع الحالية :
كود : [align=right]Combo1.Clear وأخيراً نجعل
Option1 محدداً - لم نضبطه وقت التصميم لغرض ما سنشرحه لاحقاً - ، ومن ثم نحدد العنصر الأول في القائمة ، ونطلق زر التنفيذ ، حيث أن تقريراً عن البضاعة الأولى سيكون هو الموجود بصورة افتراضية :
كود : [align=right]Option1.Value = True والآن لنر لماذا ضبطنا Option1 وقت التصميم ، ذلك أننا نريد في حالة اراد المستخدم تقريراً شاملاً أن لا نعطيه التحكم في مربعي التاريخ ، ونقوم بذلك عبر خاصية Click لأزرار الاختيار بالشكل التالي :
كود : [align=right]Private Sub Option1_Click() و
كود : [align=right]Private Sub Option2_Click() *** ويمكن ايضاً الاستعاضة عن OptionButton باستخدام CheckBox .
والآن سنضيف متغيران لمعرفة عدد سجلات البيع والشراء ، ولأننا نتعامل مع مصفوفة فسنكتب الأمر التالي في قسم التصاريح Genral : Dim MyCnt(1 )
مما يعني أن لدينا متغيرات MyCnt(0) و MyCnt(1)
والآن سنبرمج أوامر Command2 وهو زر تنفيذ التقرير . في البداية سنقوم بعمل استعلام عن اسم هذه البضاعة لمعرفة المعلومات المطلوبة عنها ووضعها في أماكنها : كود : [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='" & Combo1.Text & "'" وقد سبق شرح جملة الاستعلام أكثر من مرة .
يتبع ... الدرس الثالث والعشرون - تقارير البضائع - RaggiTech - 15-10-12 الجزء الثاني : سنقوم بالاستعلام حسب قيمة Option1 ( بين تاريخين أو عام ) وباستخدام رقم البضاعة المخزن في المتغير Num وذلك عن الـ Kind مرة عندما يساوي الصفر ومرة عند الواحد ... مما يمكننا من جعلها في حلقة تكرار ... لاحظ الكود التالي :
كود : [align=right]For i = 0 To 1 حيث يأخذ i قيما ما بين 0 و 1 .
لن نغلق حلقة التكرار فما زلنا في حاجة إليها ، وعلينا أولاً معرفة عدد السجلات الموجودة في الاستعلام وتخزينها في MyCnt رقم 0 أو 1 حسب قيمة i وذلك بالشكل التالي : كود : [align=right]If T4.RecordCount <> 0 Then والآن علينا عمل اجراءين ، اجراء خاص بتكوين الجدول ، واجراء خاص بوضع البيانات فيها ، وبدلاً من عمل اجراءات منفصلة لكل جدول فسنعتمد مجدداً على قيمة i إما 0 أو 1 ، وسنعد اجراء اسمه FlexGrid لتكوين الجدول ويستقبل قيمة المتغير i ليضبط الجدول المحدد ... لاحظ كود الاجراء :
كود : [align=right]Private Sub FlexGrid(r As Integer) وسنستدعيه بالشكل التالي :
كود : [align=right]FlexGrid (i)[/align] وبنفس الطريقة كود Put_Data لوضع البيانات :
كود : [align=right]Private Sub Put_Data(r As Integer) ونستدعيه ، ثم نغلق القاعدة ، ونغلق حلقة التكرار :
كود : [align=right]Put_Data (i) أخيراً لا تنس كود اغلاق الفورم :
كود : [align=right]Private Sub Command1_Click() والله الموفق .
والسلام عليكم ورحمة الله وبركاته . |