الدرس الخامس عشر - اضافة عمليات البيع والشراء - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (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=5703) |
الدرس الخامس عشر - اضافة عمليات البيع والشراء - RaggiTech - 15-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته . لأن التقارير هي أكثر شاشات البرنامج تشعباً فقد تركناها مؤقتاً لاكمال باقي الاجزاء ومن ثم العودة إليها ، ولذا سوف ننتقل إلى قائمة ( مهام ) مباشرة . وكما قمنا مع شاشة ( تعديل نوع ومصنع ) والتي دمجنا فيها الشاشتين معاً ، فكذلك سنفعل مع شاشتي البيع والشراء . واللتان تحتاجان إلى المحتويات التالية : * أداة عنوان Lable لتوضيح نوع العملية .
* قائمة تحتوي على البضائع الموجودة حالياً .
* حقل التاريخ والذي سيكون من نوع جديد هو أداة MaskEdit وسنرى كيف نستخدمها .
* الكمية المطلوبة للبيع أو الشراء . وبجانبها
Option لتحديد هل العدد بالصندوق أم بالوحدة . واجعل خاصية Value=True للوحدة .
* السعر المدفوع في العملية .
* زر لاضافة العملية ، وزر لاغلاق الشاشة . وقبل أن نبدأ في شرح استخدام أداة نعود إلى الموديول ، فكما جعلنا T1 ترمز لجدول البضائع ، T2,T3 لجدولي الانواع والموردين ، فإننا سنجعل T5 ترمز لجدول المبيعات ... أما T4 فستظل من أجل الاستعلامات . كود : [align=right]Set T5 = D1.OpenRecordset("Tb_Sel_Bay", dbOpenTable)[/align] والآن ... قم بالضغط على زري Ctrl+T واختر الاداة Microsoft Masked Edit Control 6.0 ، وقم برسمها بالحجم المطلوب على الفورم .
والآن من الخصائص اضغط على (...) التي بجانب Custem ستظهر لك شاشة بأهم خصائص هذه الأداة ، ومنها : Format : والتي سنضع فيها التنسيق المناسب لعملية التاريخ ، وهو :
dd/mm/yyyy
، وتحدد هذه الخاصية كيفية قراءة وعرض الرقم لاحقاً . وبهذا نستطيع أن نقول أن الناتج سيكون على شكل تاريخ ، لكننا لا يمكن بهذه الخاصية أن نمنع المستخدم من ادخال أكثر من 10 خانات ( عدد خانات التاريخ ) ولا أن نمنعه من ادخال حروف .
Mask
: تحدد هذه الخاصية ما يمكن أن ندعوه ( قناع الإدخال ) والذي سيحدد طبيعة المدخلات وعددها ، ولأننا لا نحتاج سوى أرقام فسوف نستخدم الرمز # لتشكيل قناع بالشكل التالي : ##/##/####
Prompt Char
: الحرف الذي سيوضع في مكان الفارغ ( لاحظ أنه سيوضع كصورة فقط في حين أنه لن يؤثر على القيمة ) ولنجعلها 0 مثلاً .
بعدها قم باكمال الفورم بالطريقة التي نقوم بها مع كل فورم .
ولا تنس اضافة أمر Refresh_Me والذي سنقوم ببرمجته لاحقاً . لماذا لم استخدم أداة DTPicker ... أفضل هذه الأداة في البرمجة لسبب وحيد هو أن أداة DTPicker تقرأ التاريخ بالميلادي ، لكن أسلوب العرض يختلف من جهاز لآخر ، وهذا ما قد يؤدي إلى عرض الشهور العربية في الأداة على رغم نفس قراءة التاريخ الميلادي مما يسبب بمشاكل بالبرنامج ، وحتى أجد حلاً لهذه المشكلة فسأظل على استخدام MaskedEdit .
والآن سنعود إلى MDIForm1 وسنكتب أمر اظهار هذه الشاشة .
كود : [align=right]Private Sub Operation_Click(Index As Integer) ولكن ما هي محتويات أمر
Refresh_Me ؟
سوف يحتوي هذا الأمر على ملء قائمة البضائع بجميع البضائع المتوفرة ، كما سيحتوي على أمر لملء خانة التاريخ بالتاريخ الحالي ، ولأننا لا نريد تغيير التاريخ مع كل عملية اضافة إلى التاريخ الحالي لمنع الازعاج لأنه قد يسجل عمليات تمت باليوم السابق ، وكما كنا نفعل مع كل شاشة فسنكتب الأمر بالشكل التالي :
كود : [align=right]Public Sub Refresh_Me() يبدو الجزء الأول مفهوماً ، أما لماذا قمنا بذلك مع الجزء الثاني ولم نكتب = DateTime.Date مباشرة .
وفي الواقع لعدة أسباب ، أولها أن هذه التعلمية تعطينا قيمة بالشكل التالي : DD/MM/YY أي بصيغة Short ونحن نحتاج إلى صيغة Long للعمل في البرنامج . أما عند اضافة 0 فهذا لازم لأن تعليمة مثل Day(Now) قد تعطينا مثلاً : 1 أو 2 ، فلابد من تحويلها إلى 01 و 02 . لا تنس أمر الاغلاق Unload Me في زر الإنهاء . والآن سوف نبدأ بكتابة تعليمات زر الاضافة . في البداية لابد أن نتأكد من أنه ادخل كمية ، أما السعر فيمكن أن يكون 0 ، وذلك حتى نتيح للمستخدم استخدام البرنامج كحافظة لعمليات البيع والشراء ليس إلا . كود : [align=right]If Val(Text2.Text) <= 0 Then وأخيراً نتأكد من نوع العملية المطلوبة ، والتي سننشأ لكل منها اجراء باسمي Sel و Buy ونستدعيهما من خلال الأمر السابق .
كود : [align=right]If lbl_name.Caption = "اضافة عملية بيع" Then * برمجة أمر
SEL :
لا تحتاج برمجة هذا الأمر إلى كثير من الجهد ، بل كل ما نحتاج إليه هو اضافة هذه العملية إلى قاعدة البيانات ، ومن ثم زيادة خاصية Count للبضاعة التي تم اختيارها . حسب العدد المطلوب .
كود : [align=right]T1.MoveFirst هنا يتم الانتقال للبضاعة ، ومن ثم تعريف المتغير cnt والذي سيحتوي على العدد ، والذي قد يتم ضربه بعدد الوحدات في الصندوق إذا كان مدخلاً بالصندوق .
كود : [align=right]With T5 وهذا الجزء الخاص بالاضافة إلى قاعدة البيانات ، وزيادة عدد البضاعة الموجودة .
أخيراً سنظهر رسالة باتمام العملية والعدد المتوفر حالياً . كود : [align=right]MsgBox "تمت العملية بنجاح ، يوجد من البضاعة حالياً : " & T1!Count & " وحدة", vbInformation + arabic, "اتمام العملية" يتبع ... الدرس الخامس عشر - اضافة عمليات البيع والشراء - RaggiTech - 15-10-12 برمجة الأمر
BUY :
يشبه هذا الأمر SEL إلى حد كبير ، ويختلف عنه في أننا نحتاج أولاً إلى أن نتأكد من توفر الكمية المطلوبة قبل العملية ، وإلا فإننا نظهر رسالة تحذيريه بالكمية الموجودة حالياً .
وكما هي بداية أمر Sel يبدأ الأمر BUY بالانتقال إلى السجل المطلوب وتحديد الكمية في cnt : كود : [align=right]T1.MoveFirst ومن ثم أمر التأكد من توفر الكمية المطلوبة :
كود : [align=right]If cnt > T1!Count Then ومن ثم أوامر الاضافة في قاعدة البيانات ونقص العدد بمقدار العملية :
كود : [align=right]With T5 وأخيراً الرسالة التي تفيد اتمام العملية بنجاح :
كود : [align=right]MsgBox "تمت العملية بنجاح ، يوجد من البضاعة حالياً : " & T1!Count & " وحدة", vbInformation + arabic, "اتمام العملية"[/align] ونفرغ الخانات تمهيداً لعملية جديدة :
كود : [align=right]Text1.Text = "" والآن عد مجدداً إلى Frm_Show واكتب في زري ( عملية بيع ، عملية شراء ) الأوامر التالية :
* عملية بيع : كود : [align=right]Frm_Sel_Bay.lbl_name.Caption = "اضافة عملية بيع" *** هناك خطأ في تسمية الفورم Frm_Sel_Bay ، ولم الحظ انني كتبت a بدلاً من u إلا مؤخراً .
وهذا الخطأ مكرر أيضاً في قاعدة البيانات ( جدول Tb_Sel_Bay ) أيضاً .
* عملية شراء :
كود : [align=right]Frm_Sel_Bay.lbl_name.Caption = "اضافة عملية شراء" حيث أن هذه الأوامر اظهار طبيعي للشاشة لكن مع وضع اسم البضاعة الحالية كافتراضي ، ووضع السعر الحالي كافتراضي ايضاً ، ومن ثم اطلاق أمر التحديث .
والله الموفق ... والسلام عليكم ورحمة الله وبركاته . |