![]() |
|
الدرس السادس عشر - التحكم في عمليات البيع والشراء - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (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=5704) |
الدرس السادس عشر - التحكم في عمليات البيع والشراء - RaggiTech - 15-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته . التحكم في عمليات البيع والشراء . سوف نصمم الفورم الخاص بهذه العملية بحيث يتحتوي على جدول ، وفوقه زري اختيار ( عمليات البيع - عمليات الشراء ) اضافة إلى تاريخ العمليات المطلوب تعديلها . وذلك في أداة MaskedEdit كما شرحنا في الدروس السابقة . وبأسفل الفورم يوجد زرين ، للحذف ، وللانهاء . كما يوجد بأعلاه زر ( نفذ ) والذي يقوم بتحديث الفورم حسب التاريخ أو العملية الجديدة . ونسمي هذا الفورم Frm_Sel_Bay2 . ولا تنس لهذا الفورم أن تجعل خاصية MDIChild = True . وكا هي العادة عندما نشغل أي فورم تابع للفورم MDIForm1 . Frm_Sel_Bay2.Show لكن في حدث Form_Load نضبط الأبعاد ونستدعي حدث Refresh_Me ، ونجعل حقل التاريخ يحتوي على تاريخ اليوم الحالي : ** نضبط الأبعاد فيما إذا كنا نريد شاشة بارزة. كود : [align=right]Me.Height = 4335وسنرى الآن على ماذا سيحتوي أمر Refresh_Me :
في بداية الأمر نحتاج إلى استدعاء دالة باسم Flex تقوم باعداد الجدول .
وستقوم هذه الدالة بمعرفة عدد العمليات بناء على عمليات البيع أو الشراء أولاً . كود : [align=right]If Option1.Value = True Thenحيث نكون قد عرفنا المتغير MyCnt في Genral لإننا سنستخدمه لاحقاً .
ثم تجهز الجدول : كود : [align=right]MSFlexGrid1.Clearنستدعي هذا الأمر في بداية اجراء
Refresh_Me .
ثم ننتقل إلى أول سجل في الجدول T5 إذا لم تكن فارغة ، ونبدأ في الدوران من أول سجل إلى آخر سجل ووضع السجل الذي له Kind والتاريخ المناسب في الجدول .
كود : [align=right]Sub Refresh_Me()هل تعرف أين نحتاج هذا الامر أيضاً ... في زر ( تنفيذ ) . حيث سنستدعي أمر Refresh_Me .
التعديل في عمليات البيع والشراء . سنضيف زراً جديداً بجانب زر الحذف ، ونسميه تعديل . ويختص هذا الزر بتعديل محتويات البضاعة الحالية إلى محتويات جديدة . سوف نقوم باعداد فورم سريع يحتوي على خانات التعديل ، وسيكون عبارة عن نسخة من فورم اضافة عملية بيع وشراء ، إلا أن النوع يوضع افتراضياً كما توضع البيانات افتراضياً أيضاً . كما ستحتوي على Varibale متغير يوضح رقم العملية التي نقوم بتعديلها حالياً . وسنقوم بذلك عن طريق تعريفه Public . كود : [align=right]Public Num As Integer[/align]كما أننا لن نعيد اظهار ( وحدة - صندوق ) مرة اخرى .
أيضاً سيظهر اسم البضاعة على أنه ثابت Lable . والآن إلى أمر اظهار هذا الفورم : كود : [align=right]If MSFlexGrid1.Row = 0 Then Exit Subيتبع ...
الدرس السادس عشر - التحكم في عمليات البيع والشراء - RaggiTech - 15-10-12 ولنعد الآن إلى الفورم الجديد ولنر كيف ستتم عملية التعديل .
في البداية نتأكد من ادخال عدد للبضاعة : كود : [align=right]If Val(Text2.Text) <= 0 Thenثم ننتقل إلى السجل صاحب العملية الحالية :
كود : [align=right]If T5.RecordCount = 0 Then Exit Subوالآن تعني عملية التعديل هذه أن نقوم باعادة الأوضاع كما كانت عليه قبل هذه العملية ، ومن ثم تنفيذ عملية البيع ( حذف العملية القديمة ، اضافة العملية الجديدة ) تقريباً .
لذا سننتقل أولاً إلى البضاعة المطلوبة : كود : [align=right]If T1.RecordCount <> 0 Then T1.MoveFirstثم نقوم تحديث معلومات
T5 وذلك بالشكل التالي :
كود : [align=right]If T5!kind = 0 Thenكود : [align=right]Sub BUY()كود : [align=right]Sub SEL()تغيير لون الصف المحدد : لنحقق عملية تغير لون الصف الذي حددناه نحتاج بادئ ذي بدئ إلى عمل دالة تقوم بميح جميع الالوان الموجودة في MSFlexGrid ، وسيسير التغيير بعدد الصفوف وهو العدد المخزن في المتغير Mycnt ، وبالعرض بعدد الأعمدة وهو 5 مع تجاهل العمود الرئيسي والصف الرئيسي ... ولنر الآن هذه الدالة : كود : [align=right]Sub Clear_Color()ويتم اطلاق هذه الدالة بداية في حدث النقر على الجدول . ولكن بعد أن نحتفظ برقم الصف الحالي في متغير ما . ماذا سيحدث أيضاً في أمر النقر على الجدول Click ، كل ما لدينا أننا سنبدا من العمود الثاني وحتى السادس مع ثبات الصف ونجعل اللون أحمراً . لاحظ الكود التالي : كود : [align=right]If MSFlexGrid1.Row = 0 Then Exit Subسنبدأ الآن في برمجة زر الحذف : في بداية عملية الحذف نقوم باظهار الرسالة التقليدية ، هل ما زلت تريد الاستمرار ؟ وذلك بعد التأكد من أننا لسنا في Row=0 . كود : [align=right]If MSFlexGrid1.Row = 0 Then Exit Subكود : [align=right]sure = MsgBox("هل تريد حذف العملية وكافة النتائج المترتبة عليها ( زيادة أو نقص للبضاعة ) أم الحذف فقط ؟", vbQuestion + vbYesNoCancel + arabic, "تأكيد الحذف")كود : [align=right]MSFlexGrid1.Col = 1كود : [align=right]If sure = vbYes Thenكود : [align=right]T5.Delete[/align]كود : [align=right]Refresh_Me[/align]تعديلات بسيطة في أمر Refresh_Me الخاص بشاشة التحكم في المبيعات . التعديل الأول بسيط جداً ، كل ما عليك هو اضافة الامر التالي لنهاية الإجراء : كود : [align=right]MSFlexGrid1.Row = 0[/align]التعديل الثاني هو استخدام Frm_Wait في العملية ، لذلك سنضع الأمر التالي قبل حلقة التكرار : كود : [align=right]Frm_Wait.Showكود : [align=right]Frm_Wait.ProgressBar1.Value = Frm_Wait.ProgressBar1.Value + 1وفي نهاية الكود : كود : [align=right]Unload Frm_Wait[/align]والملف في المرفقات ... والله الموفق ... والسلام عليكم ورحمة الله وبركاته . |