15-10-12, 08:32 AM
الجزء الثاني : سنقوم بالاستعلام حسب قيمة Option1 ( بين تاريخين أو عام ) وباستخدام رقم البضاعة المخزن في المتغير Num وذلك عن الـ Kind مرة عندما يساوي الصفر ومرة عند الواحد ... مما يمكننا من جعلها في حلقة تكرار ... لاحظ الكود التالي :
كود :
[align=right]For i = 0 To 1
If Option1.Value = True Then
SQL = "select * from tb_sel_bay where product=" & num & " and kind=" & i
Else
SQL = "select * from tb_sel_bay where product=" & num & " and kind=" & i & " and date between#" & Format(MaskEdBox1.Text, "MM/DD/YYYY") & "# and #" & Format(MaskEdBox2.Text, "MM/DD/YYYY") & "#"
End If
Set T4 = D1.OpenRecordset(SQL, dbOpenDynaset)[/align]حيث يأخذ i قيما ما بين 0 و 1 .
لن نغلق حلقة التكرار فما زلنا في حاجة إليها ، وعلينا أولاً معرفة عدد السجلات الموجودة في الاستعلام وتخزينها في MyCnt رقم 0 أو 1 حسب قيمة i وذلك بالشكل التالي :
لن نغلق حلقة التكرار فما زلنا في حاجة إليها ، وعلينا أولاً معرفة عدد السجلات الموجودة في الاستعلام وتخزينها في MyCnt رقم 0 أو 1 حسب قيمة i وذلك بالشكل التالي :
كود :
[align=right]If T4.RecordCount <> 0 Then
T4.MoveLast
T4.MoveFirst
End If
MyCnt(i) = T4.RecordCount[/align]والآن علينا عمل اجراءين ، اجراء خاص بتكوين الجدول ، واجراء خاص بوضع البيانات فيها ، وبدلاً من عمل اجراءات منفصلة لكل جدول فسنعتمد مجدداً على قيمة i إما 0 أو 1 ، وسنعد اجراء اسمه FlexGrid لتكوين الجدول ويستقبل قيمة المتغير i ليضبط الجدول المحدد ... لاحظ كود الاجراء :
كود :
[align=right]Private Sub FlexGrid(r As Integer)
MSFlexGrid(r).Clear
MSFlexGrid(r).Cols = 5
MSFlexGrid(r).Rows = MyCnt(r) + 1
MSFlexGrid(r).Row = 0
MSFlexGrid(r).Col = 0
MSFlexGrid(r).Text = "ت"
MSFlexGrid(r).Col = 1
MSFlexGrid(r).Text = "رقم"
MSFlexGrid(r).Col = 2
MSFlexGrid(r).Text = "التاريخ"
MSFlexGrid(r).Col = 3
MSFlexGrid(r).Text = "الكمية"
MSFlexGrid(r).Col = 4
MSFlexGrid(r).Text = "السعر"
MSFlexGrid(r).ColAlignment(0) = 5
MSFlexGrid(r).ColAlignment(1) = 5
MSFlexGrid(r).ColAlignment(2) = 5
MSFlexGrid(r).ColAlignment(3) = 5
MSFlexGrid(r).ColAlignment(4) = 5
MSFlexGrid(r).ColWidth(0) = 500
MSFlexGrid(r).ColWidth(1) = 500
MSFlexGrid(r).ColWidth(3) = 1200
End Sub[/align]وسنستدعيه بالشكل التالي :
كود :
[align=right]FlexGrid (i)[/align]وبنفس الطريقة كود Put_Data لوضع البيانات :
كود :
[align=right]Private Sub Put_Data(r As Integer)
n = 0
With MSFlexGrid(r)
For i = 0 To T4.RecordCount - 1
n = n + 1
.Row = n
.Col = 0
.Text = n
.Col = 1
.Text = T4!Number
.Col = 2
.Text = T4!Date
.Col = 3
.Text = T4!Count
.Col = 4
.Text = T4!price
T4.MoveNext
Next i
End With
End Sub[/align]ونستدعيه ، ثم نغلق القاعدة ، ونغلق حلقة التكرار :
كود :
[align=right]Put_Data (i)
T4.Close
Next i[/align]أخيراً لا تنس كود اغلاق الفورم :
كود :
[align=right]Private Sub Command1_Click()
Unload Me
End Sub[/align]والله الموفق .
والسلام عليكم ورحمة الله وبركاته .
والسلام عليكم ورحمة الله وبركاته .
