السلام عليكم
تكثر الحاجة الى اخراج تقرير حسب حقول محددة يختارها المستخدم
وهذا الباب تم التطرق اليه في هذا المنتدى ومن يبحث يجد الكثير .. علما اني قد استفدت واخذت من تلك المواضيع فما انا الا ناقل . ورب ناقل علم الى من هو اعلم منه .
وحتى يكون هذا الموضوع مرجع مختصر لكيفية تصميم واعداد التقرير
لذا عملت على اعداد مثال صغير وهو عبارة عن جدول ونموذج وتقرير
اولا :
عمل قائمة في النموذج يتم فيها عرض حقول الجدول عند تحميل النموذج ... وهذه الاكواد هي المسؤولة :
Private Sub Form_Load()
Dim dbs As DAO.Database
Dim tbl As DAO.TableDef
Dim sCaption As String
DoCmd.Restore
Set dbs = CurrentDb
Set tbl = dbs.TableDefs("table1")
For Each fld In tbl.Fields
sCaption = ""
On Error Resume Next
sCaption = fld.Properties("Caption")
On Error GoTo 0
lstFields.AddItem fld.Name & ";" & sCaption
Next fld
Set dbs = Nothing
Set tbl = Nothing
End Sub
ثانيا عملت زر لإعداد الحقول في التقرير ثم فتحه ، وخلف هذا الزر يتم تنفيذ هذه الشفرة
Dim i As Integer
Dim txt As TextBox
Dim lbl As Label
Dim intSelectedCount As Integer
Dim lngWidth As LoadPictureConstants
Dim intSelectedNo As Integer
With lstFields
If .ItemsSelected.Count = 0 Then
MsgBox "يجب اختيار حقل واحد على الأقل", vbExclamation, "خطأ"
Exit Sub
End If
DoCmd.OpenReport "Rep1", acViewDesign, , , acHidden
intSelectedCount = .ItemsSelected.Count
lngWidth = Reports("Rep1").Width / intSelectedCount
Reports("Rep1").Section("PageHeaderSection").Height = 310
Reports!Rep1!Label2.Caption = Nz(Me.Textlabl)
Reports("Rep1").Section("Detail").Height = 310
intSelectedNo = 0
For i = 0 To .ListCount - 1
If .Selected(i) Then
Set lbl = CreateReportControl("Rep1", acLabel, acPageHeader, , , intSelectedNo * (lngWidth + 50), 5, lngWidth, 300)
lbl.Caption = .Column(1, i)
lbl.BackStyle = 1
lbl.BackColor = RGB(200, 200, 200)
lbl.BorderStyle = 1
lbl.FontBold = True
lbl.TextAlign = 2
Set txt = CreateReportControl("Rep1", acTextBox, acDetail, , .Column(0, i), intSelectedNo * (lngWidth + 50), 5, lngWidth, 300)
txt.BorderStyle = 1
txt.TextAlign = 2
intSelectedNo = intSelectedNo + 1
End If
Next i
End With
DoCmd.OpenReport "Rep1", acViewReport
ملحوظات :
جعلت زر الخروج في التقرير يغلق التقرير ( من غير حفظ ) متجاوزا رسالة تأكيد الحفظ
حفظ التقرير يسبب تراكم الحقول المصنوعة داخل الكود .. ومن ثم تظهر المشكلات والأخطاء
ختاما لا تنسوني من دعواتكم الصالحة واتمنى ان تجدوا فيه الفائدة والمتعة
اختيار حقول التقرير.rar