15-10-12, 08:10 AM
كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .
التحكم في عمليات البيع والشراء .
سوف نصمم الفورم الخاص بهذه العملية بحيث يتحتوي على جدول ، وفوقه زري اختيار ( عمليات البيع - عمليات الشراء ) اضافة إلى تاريخ العمليات المطلوب تعديلها . وذلك في أداة MaskedEdit كما شرحنا في الدروس السابقة .
وبأسفل الفورم يوجد زرين ، للحذف ، وللانهاء . كما يوجد بأعلاه زر ( نفذ ) والذي يقوم بتحديث الفورم حسب التاريخ أو العملية الجديدة .
ونسمي هذا الفورم Frm_Sel_Bay2 .
ولا تنس لهذا الفورم أن تجعل خاصية MDIChild = True .
وكا هي العادة عندما نشغل أي فورم تابع للفورم MDIForm1 .
Frm_Sel_Bay2.Show
لكن في حدث Form_Load نضبط الأبعاد ونستدعي حدث Refresh_Me ، ونجعل حقل التاريخ يحتوي على تاريخ اليوم الحالي :
** نضبط الأبعاد فيما إذا كنا نريد شاشة بارزة.
السلام عليكم ورحمة الله وبركاته .
التحكم في عمليات البيع والشراء .
سوف نصمم الفورم الخاص بهذه العملية بحيث يتحتوي على جدول ، وفوقه زري اختيار ( عمليات البيع - عمليات الشراء ) اضافة إلى تاريخ العمليات المطلوب تعديلها . وذلك في أداة MaskedEdit كما شرحنا في الدروس السابقة .
وبأسفل الفورم يوجد زرين ، للحذف ، وللانهاء . كما يوجد بأعلاه زر ( نفذ ) والذي يقوم بتحديث الفورم حسب التاريخ أو العملية الجديدة .
ونسمي هذا الفورم Frm_Sel_Bay2 .
ولا تنس لهذا الفورم أن تجعل خاصية MDIChild = True .
وكا هي العادة عندما نشغل أي فورم تابع للفورم MDIForm1 .
Frm_Sel_Bay2.Show
لكن في حدث Form_Load نضبط الأبعاد ونستدعي حدث Refresh_Me ، ونجعل حقل التاريخ يحتوي على تاريخ اليوم الحالي :
** نضبط الأبعاد فيما إذا كنا نريد شاشة بارزة.
كود :
[align=right]Me.Height = 4335
Me.Width = 5895
Me.Left = ((MDIForm1.Width - Me.Width) / 2)
Me.Top = ((MDIForm1.Height - Me.Height) / 2) - 400
Me.Show
Dim Myday, Mymonth, Myyear
Myday = Day(Now)
If Len(Myday) = 1 Then Myday = 0 & Myday
Mymonth = Month(Now)
If Len(Mymonth) = 1 Then Mymonth = 0 & Mymonth
Myyear = Year(Now)
MaskEdBox1.Text = Myday & "/" & Mymonth & "/" & Myyear
Refresh_Me[/align]
وسنرى الآن على ماذا سيحتوي أمر
Refresh_Me :
في بداية الأمر نحتاج إلى استدعاء دالة باسم Flex تقوم باعداد الجدول .
وستقوم هذه الدالة بمعرفة عدد العمليات بناء على عمليات البيع أو الشراء أولاً .
وستقوم هذه الدالة بمعرفة عدد العمليات بناء على عمليات البيع أو الشراء أولاً .
كود :
[align=right]If Option1.Value = True Then
SQL = "select count(*) as cnt from tb_sel_bay where kind=0 and date=#" & Format(MaskEdBox1.Text, "mm/dd/yyyy") & "#"
Else
SQL = "select count(*) as cnt from tb_sel_bay where kind=1 and date=#" & Format(MaskEdBox1.Text, "mm/dd/yyyy") & "#"
End If
Set T4 = D1.OpenRecordset(SQL, dbOpenDynaset)
MyCnt = T4!cnt[/align]
حيث نكون قد عرفنا المتغير MyCnt في Genral لإننا سنستخدمه لاحقاً .
ثم تجهز الجدول :
ثم تجهز الجدول :
كود :
[align=right]MSFlexGrid1.Clear
MSFlexGrid1.Cols = 6
MSFlexGrid1.Rows = MyCnt + 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) = 1200[/align]
نستدعي هذا الأمر في بداية اجراء
Refresh_Me .
ثم ننتقل إلى أول سجل في الجدول T5 إذا لم تكن فارغة ، ونبدأ في الدوران من أول سجل إلى آخر سجل ووضع السجل الذي له Kind والتاريخ المناسب في الجدول .
كود :
[align=right]Sub Refresh_Me()
Flex
Dim Key, n As Integer
n = 0
If T5.RecordCount <> 0 Then T5.MoveFirst
If Option1.Value = True Then
Key = 0
Else
Key = 1
End If
For i = 0 To T5.RecordCount - 1
If T5!kind = Key And Format(T5!Date, "dd/mm/yyyy") = MaskEdBox1.Text Then
n = n + 1
MSFlexGrid1.Row = n
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = n
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = T5!Number
MSFlexGrid1.Col = 2
SQL = "select name from tb_product where number=" & T5!product & ""
Set T4 = D1.OpenRecordset(SQL, dbOpenDynaset)
MSFlexGrid1.Text = T4!Name
T4.Close
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = T5!Date
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = T5!Count
MSFlexGrid1.Col = 5
MSFlexGrid1.Text = T5!price
End If
T5.MoveNext
Next i
End Sub[/align]
هل تعرف أين نحتاج هذا الامر أيضاً ... في زر ( تنفيذ ) . حيث سنستدعي أمر Refresh_Me .
التعديل في عمليات البيع والشراء .
سنضيف زراً جديداً بجانب زر الحذف ، ونسميه تعديل . ويختص هذا الزر بتعديل محتويات البضاعة الحالية إلى محتويات جديدة .
سوف نقوم باعداد فورم سريع يحتوي على خانات التعديل ، وسيكون عبارة عن نسخة من فورم اضافة عملية بيع وشراء ، إلا أن النوع يوضع افتراضياً كما توضع البيانات افتراضياً أيضاً . كما ستحتوي على Varibale متغير يوضح رقم العملية التي نقوم بتعديلها حالياً . وسنقوم بذلك عن طريق تعريفه Public .
التعديل في عمليات البيع والشراء .
سنضيف زراً جديداً بجانب زر الحذف ، ونسميه تعديل . ويختص هذا الزر بتعديل محتويات البضاعة الحالية إلى محتويات جديدة .
سوف نقوم باعداد فورم سريع يحتوي على خانات التعديل ، وسيكون عبارة عن نسخة من فورم اضافة عملية بيع وشراء ، إلا أن النوع يوضع افتراضياً كما توضع البيانات افتراضياً أيضاً . كما ستحتوي على Varibale متغير يوضح رقم العملية التي نقوم بتعديلها حالياً . وسنقوم بذلك عن طريق تعريفه Public .
كود :
[align=right]Public Num As Integer[/align]
كما أننا لن نعيد اظهار ( وحدة - صندوق ) مرة اخرى .
أيضاً سيظهر اسم البضاعة على أنه ثابت Lable .
والآن إلى أمر اظهار هذا الفورم :
أيضاً سيظهر اسم البضاعة على أنه ثابت Lable .
والآن إلى أمر اظهار هذا الفورم :
كود :
[align=right]If MSFlexGrid1.Row = 0 Then Exit Sub
MSFlexGrid1.Col = 1
Frm_Edit_SP.Num = MSFlexGrid1.Text
MSFlexGrid1.Col = 2
Frm_Edit_SP.Label3.Caption = MSFlexGrid1.Text
MSFlexGrid1.Col = 3
Frm_Edit_SP.MaskEdBox1.Text = Format(MSFlexGrid1.Text, "dd/mm/yyyy")
MSFlexGrid1.Col = 4
Frm_Edit_SP.Text2.Text = MSFlexGrid1.Text
MSFlexGrid1.Col = 5
Frm_Edit_SP.Text1.Text = MSFlexGrid1.Text
Frm_Edit_SP.Show 1
Refresh_Me[/align]
يتبع ...