![]() |
|
الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (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=5714) |
الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين - RaggiTech - 15-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته . التقارير اليومية . في هذا الدرس سوف نتعرف على كيفية عمل نموذج مبسط للتقارير اليومية . ما نحتاج إليه في هذه الشاشة هو أداة MaskEdBox1 للتاريخ ، والذي سيكون افتراضياً تاريخ اليوم .
نحتاج أيضاً إلى زر للتنفيذ ، وإلى جدولين لعرض المبيعات والمشتريات ، وزر لاغلاق الفورم .
أيضاً نحتاج إلى خمسة Labels على النحو التالي :
اليوم من الأسبوع : عدد عمليات المبيعات - عدد عمليات المشتريات - اجمالي سعر المبيعات - اجمالي سعر المشتريات .
وأخيراً نضبط خصائص الفورم ، فنجعل MDIChild=True ونزيل عناصر التحكم من أعلى الفورم . والآن نبدا في كتابة أكواد هذا الفورم . فأولاً نضبط احداثيات الفورم كما اعتدنا مع كل فورم من هذا النوع : كود : [align=right]Me.Width = 4800ثم نضبط تاريخ اليوم ونضعه في الأداة :
كود : [align=right]Dim Myday, Mymonth, Myyearوأخيراً نقوم بالضغط على الزر الخاص بالتنفيذ ليكون افتراضياً تاريخ اليوم :
كود : [align=right]Command2.Value = True[/align]والآن سنقوم بعمل دالة Function نقوم بتمرير رقم اليوم لها وتعطينا اسم اليوم ، ونستخدم في ذلك الدالة WeekDay ، ونبدأ أولاً بتكوين الدالة :
كود : [align=right]Private Function dayname(x As Date) As Stringوالآن أصبح لدينا التاريخ في متغير x وسنستخدم معه الدالة WeekDay والتي نمرر لها بارميترين ( التاريخ ، ويوم بداية الأسبوع ) وتعيد رقم اليوم من الأسبوع :
كود : [align=right]x = Weekday(x, vbSaturday)[/align]والآن سنحول هذا الرقم إلى نص بالشكل التالي :
كود : [align=right]Select Case xوالآن نبدأ في تكوين زر
Command2 والخاص بـ ( نفذ ) .
نعرف أولاً أربع متغيرات لنخزن فيها معلومات ال Labels وذلك في قسم التصاريح Genral :
كود : [align=right]Dim a1 As Integer, a2 As Integer, a3 As Integer, a4 As Integer[/align]وفي بداية أوامر هذا الزر نقوم بتصفيرها كلها :
كود : [align=right]a1 = 0: a2 = 0: a3 = 0: a4 = 0[/align]ونستدعي الدالة التي قمنا بعملها ونضعها في مكانها المخصص :
كود : [align=right]x = dayname(MaskEdBox1.Text)بعد ذلك نقوم بالاستعلام عن عمليات اليوم ، البيع ثم الشراء ، ونضع القيم المستقاه بواسطة دوال الاستعلام في المتغيرات التي قمنا بتعريفها :
كود : [align=right]SQL = "select sum(price) as prc,count(*) as cnt from tb_sel_bay where kind=0 and date=#" & Format(MaskEdBox1.Text, "MM/DD/YYYY") & "#"والآن نقوم ببناء الجدولين ، ولاحظ أنه يمكننا الاستفادة من خاصية
Index كما في الشاشات السابقة :
كود : [align=right]Flex1واللذان قمنا بعملهما سابقاً بالشكل التالي :
كود : [align=right]Private Sub Flex1()ثم نقوم بالاستعلام عن البيانات المطلوبة ، ووضعها في اماكنها المناسبة عبر استدعاء الحدثين
Put_Data1 و Put_Data2 :
كود : [align=right]SQL = "select * from tb_sel_bay where kind=0 and date=#" & Format(MaskEdBox1.Text, "MM/DD/YYYY") & "#"في حدث Put_Data سنقوم بوضع البيانات في الجدول كما هي العادة ، ولكن المخزن لدينا في الجدول هو رقم البضاعة وليس اسمها ، لذا سنقوم بالاستعلام عنه أولاً ، وسنضطر لتعرف T6 في الموديول :
كود : [align=right]Public T6 As Recordset[/align]بهذا يكون شكل الأمر
كود : [align=right]Private Sub Put_Data1()وكذلك الثاني تماماً .
يتبع .. الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين - RaggiTech - 15-10-12 كاتب المشاركة : أحمد جمال
التقارير بين تاريخين .
خلال هذا الدرس سوف نقوم بتطبيق التقرير بين تاريخين ، ولأنه لا يختلف كثيراً عن التقرير اليومي لذلك سنضعهم معاً في نفس الشاشة ، وسوف نسر التغييرات التي سنقوم بها من جراء هذه العملية . أولاً : تغييرات في التصميم : سنضيف اداة MaskEdBox2 لعرض التاريخ الثاني ، اضافة إلى Label2 يحتوي على كلمة ( إلى ) توضع بين التاريخين ، ونضبط Visible=False لهما ، فيما عدا ذلك لن نغير شيئاً حتى في أماكن الازار والخانات وغيرها . ثانياً : تغييرات أوامر اظهار الشاشات : سوف نخفي أولاً الشاشة Frm_Report4 لكي تعود إلى وضعها الطبيعي من حيث أماكن الأزرار وغيرها ( وضع التقرير اليومي ) . بعد ذلك فيما لو كان النوع الثاني فإننا نظهر الاداتين السابقتين ، ونضبط احداثيات Command2 وهو زر التنفيذ من جديد ، وذلك بالشكل التالي : كود : [align=right]Case 0ثالثاً : تغييرات حدث
Form_Load :
لن نضيف سوى أمر وضع التاريخ الحالي حتى في الخانة الثانية :
كود : [align=right]MaskEdBox2.Text = MaskEdBox1.Text[/align]رابعاً : التغييرات في زر ( نفذ ) :
* لن نضع اليوم من الأسبوع في حالة التاريخين ، بل سنضع : مدة مفتوحة ، فيصبح الكود كالتالي : كود : [align=right]If Label2.Visible = False Then* لن نستعلم مباشرة بواسطة علامة المساواة ، بل سنستخدم المعامل
Between إذا تحقق الشرط :
كود : [align=right]If Label2.Visible = False Thenوكذلك مع جمل استعلام الشراء .
* في جملة الاستعلام الخاصة بوضع البيانات أيضاً سنتأكد من استخدام عامل المساواة أو Between :
كود : [align=right]If Label2.Visible = False Thenوكذلك مع الجملة الثانية .
خامساً : التغييرات على مستوى كود Flex1 و Flex2 .
لن نغير شيئاً سوى أنه في حالة بين تاريخين سنضيف خانة لعرض التاريخ ، ولذلك نضيف الكود التالي قبل نهاية أمر Flex1 :
كود : [align=right]If Label2.Visible = True Thenوكذلك مع Flex2 .
سادساً: التغيرات على مستوى كود Put_Data1 و Put_Data2 :
كود : [align=right]For i = 0 To T4.RecordCount - 1وأيضاً مع Put_Data2 .
لن ننسى ايضاً الأوامر الموجودة في القائمة في الشاشة الرئيسية ، والتي ستصبح بالشكل التالي : كود : [align=right]If T1.RecordCount = 0 Thenهكذا فقط ، والملف مرفق مع التغييرات ...
والله الموفق ... والسلام عليكم ورحمة الله وبركاته . |