تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الرابع والعشرون - تقارير المصانع والأنواع
#1
كاتب الموضوع : أحمد جمال

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .


تقارير المصانع والأنواع :


هناك الكثير مما يمكن أن تقدمه كتقرير لنوع أو مصنع ، لكننا لن نتوسع كثيراً بل كل ما سوف نعرضه هو منتجات المصنع والنوع .
كل ما نحتاج إليه لتصميم هذا الفورم هو :

أداة مربع تحرير وسرد Combo ، وثلاث مربعات عناوين Label لعرض اسم النوع أو المصنع ، عدد البضائع تحته ، وحالته ( محذوف - غير محذوف ) .
نحتاج أيضاً في كلا الفورمين إلى جدول MSFlexGrid لنعرض فيه البضائع تحت هذا المصنع أو ذاك النوع ، وأخيراً زر أمر نكتب فيها Unload Me وذلك للاغلاق .

ولنضبط خاصية MDIChild لكلا الفورمين بحيث تصبح True ، ونسميهما Frm_Report2 و Frm_Report3 على التوالي .


والآن سنبدا في كتابة الأكواد ، ونبدأ بحدث Form_Load لكلا الفورمين .
في هذا الحدث سوف نضبط احداثيات الموقع كما تعودنا مع كل فورم ، ومن ثم نعبئ القائمة بالموردين أو بالمصانع :


كود :
[align=right]Me.Width = 4800
Me.Height = 3600
Me.Left = ((MDIForm1.Width - Me.Width) / 2)
Me.Top = ((MDIForm1.Height - Me.Height) / 2) - 40
Me.Show

Combo1.Clear
T2.MoveFirst
For i = 0 To T2.RecordCount - 1
Combo1.AddItem T2!Name
T2.MoveNext
Next i

Combo1.ListIndex = 0[/align]
مع ملاحظة أنه في الفورم الثالث الخاص بالمصانع سوف نستخدم T3 بدلاً من T2 .
والآن سنقوم بعمل حدث Flex خاص بتكوين الجدول ، والفرق بين الفورمين في هذا التكوين أننا في الأول نضع معلومة ( مصنع البضاعة ) دون النوع ، والعكس في الفورم الثاني :


كود :
[align=right]Private Sub Flex()
MSFlexGrid1.Clear
MSFlexGrid1.Cols = 6
MSFlexGrid1.Rows = T4.RecordCount + 1

MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = "ت"
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "رقم"
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = " اسم البضاعة"
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "المصنع"
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = "السعر"
MSFlexGrid1.Col = 5
MSFlexGrid1.Text = "العدد"

MSFlexGrid1.ColAlignment(0) = 5
MSFlexGrid1.ColAlignment(1) = 5
MSFlexGrid1.ColAlignment(2) = 3
MSFlexGrid1.ColAlignment(3) = 5
MSFlexGrid1.ColAlignment(4) = 5
MSFlexGrid1.ColAlignment(5) = 5

MSFlexGrid1.ColWidth(0) = 500
MSFlexGrid1.ColWidth(1) = 500
MSFlexGrid1.ColWidth(2) = 1500
MSFlexGrid1.ColWidth(3) = 1500
End Sub[/align]

وأخيراً نقوم بعمل الحدث Combo1_Click والذي يطلق عند اختيار المستخدم لنوع أو مصنع ما .
في البداية نقوم بعمل جملة الاستعلام والتي ستكون في حالة المصانع :


كود :
[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='" & Combo1.Text & "'"
Set T4 = D1.OpenRecordset(SQL, dbOpenDynaset[/align]
)



وسنغير شرط البحث من Tb_Factory.name إلى Tb_Category في حالة الأنواع .

والآن سنختبر شرط وجود سجلات ، فإن لم يكن هناك أي بضائع تحت هذا النوع-المصنع :


كود :
[align=right]If T4.RecordCount = 0 Then
Lbl_name = "اسم المصنع : " & Combo1.Text
lbl_cnt = "عدد بضائع المصنع : " & T4.RecordCount
lbl_sta = "الحالة : عادي"
Flex
Exit Sub
End If[/align]

بالرغم من عدم وجود سجلات سنضبط بعض الخصائص ، كما سنستدعي الحدث Flex والذي يكون الجدول دون أي صفوف .
لاحقاً لن يكتمل التنفيذ إلا في حالة وجود سجلات ، حيث نقوم بالانتقال للسجل الأخير ثم إلى الأول وذلك للتحديث :


كود :
[align=right]T4.MoveLast
T4.MoveFirst[/align]

ثم نضبط مجموعة من المعلومات المتعلقة بهذا النوع ... لاحظ الأمر التالي :


كود :
[align=right]Lbl_name = "اسم المصنع : " & Combo1.Text
lbl_cnt = "عدد بضائع المصنع : " & T4.RecordCount
If T4.Fields("tb_category.view") = False Then
lbl_sta = "الحالة : محذوف"
Else
lbl_sta = "الحالة : عادي"
End If
Flex[/align]

والآن ... لماذا في حالة وجود بضائع تحت النوع أو المصنع تأكدنا من الحالة ( محذوف أم غير ذلك ) ، أما في حالة عدم وجود بضائع فإننا نضع مباشرة ( عادي ) ؟؟؟ ذلك انه لو كان محذوف ولا توجد تحته بضائع لكان قد تم حذفه سابقاً .


بعد ذلك نقوم باظهار فورم الانتظار ونضبط خصائصة كما أسلفنا شرحه :


كود :
[align=right]Frm_Wait.Show
Frm_Wait.ProgressBar1.Max = T4.RecordCount
Frm_Wait.ProgressBar1.Min = 0
Frm_Wait.ProgressBar1.Value = 0[/align]
ومن ثم نبدأ في وضع البيانات في أماكنها الصحيحة :


كود :
[align=right]For i = 0 To T4.RecordCount - 1
Frm_Wait.ProgressBar1.Value = Frm_Wait.ProgressBar1.Value + 1
DoEvents
MSFlexGrid1.Row = i + 1
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = T4.Fields("tb_product.Number")
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = T4.Fields("tb_product.name")
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = T4.Fields("tb_category.name")
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = T4!price
MSFlexGrid1.Col = 5
MSFlexGrid1.Text = T4.Fields("Count")

T4.MoveNext
Next i[/align]
لاحقاً نقوم بعمل Sort ترتيب للجدول مع اعادة الترتيب كما سبق :


كود :
[align=right]MSFlexGrid1.Col = 2
MSFlexGrid1.Sort = 7
MSFlexGrid1.Col = 0

For i = 0 To T4.RecordCount - 1
MSFlexGrid1.Row = i + 1
MSFlexGrid1.Text = i + 1
Next i[/align]
أخيراً نغلق قاعدة البيانات ، ونخفي فورم الانتظار :


كود :
[align=right]T4.Close
Unload Frm_Wait[/align]

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .



الملفات المرفقة
.zip   prog20.zip (الحجم : 191.76 ك ب / التحميلات : 152)
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الرابع والثلاثون والأخير - نبذة عن العملية العكسية + تجهيز البرنامج على Cd RaggiTech 0 11,108 15-10-12, 09:10 AM
آخر رد: RaggiTech
  الدرس الثالث والثلاثون - كيفية عمل اعداد Setup للبرنامج RaggiTech 0 3,978 15-10-12, 09:08 AM
آخر رد: RaggiTech
  الدرس الثاني والثلاثون - التحويل إلى exe RaggiTech 0 4,063 15-10-12, 09:07 AM
آخر رد: RaggiTech
  الدرس الحادي والثلاثون - تعددية المستخدمين - البحث وطباعة الفواتير - التعليمات ... RaggiTech 2 4,951 15-10-12, 09:05 AM
آخر رد: RaggiTech
  الدرس الثلاثون - التعامل مع شريط الأدوات ToolBar RaggiTech 0 3,822 15-10-12, 08:59 AM
آخر رد: RaggiTech
  الدرس التاسع والعشرون - التعامل مع أشرطة الحالة Statues Bar RaggiTech 0 3,602 15-10-12, 08:57 AM
آخر رد: RaggiTech
  الدرس الثامن والعشرون -الطباعة في البرنامج . RaggiTech 4 5,292 15-10-12, 08:56 AM
آخر رد: RaggiTech
  الدرس السابع والعشرون - مقدمة إلى التعامل مع التقارير من خلال DataReport RaggiTech 2 6,105 15-10-12, 08:45 AM
آخر رد: RaggiTech
  الدرس السادس والعشرون - التقارير اليومية ، والتقارير بين تاريخين RaggiTech 1 4,347 15-10-12, 08:39 AM
آخر رد: RaggiTech
  الدرس الخامس والعشرون - الإحصائيات والرسوم البيانية RaggiTech 0 3,766 15-10-12, 08:37 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم