السلام عليكم
هل أزعجك يوماً تذييل التقرير اليتيم ؟
عندما تنشئ تذييلا للتقرير فهو سيكون في آخر التقرير سواء كان في وسط آخر صفحه أو في آخرها .
تخييل أن السجلات انتهت بنهاية الصفحه قبل الأخيره سيكون التذييل في صفحة جديده ... وحيدا .. يتيماً .
للتخلص من هذه المشكله عليك أن تعرف عدد الصفحات وعدد السجلات في كل صفحه .
** ضع مربع نص في تذييل الصفحه وأكتب في مصدر الأداة :
=[Page] & " of " & [Pages]
** اصنع عداد للسجلات : يكفي أن تضع مربع نص في بداية السجل وتكتب في مصدر الاداه :
=1
وغير خاصية المجموع الى شامل . ليكن اسم الأداة Enum
** الآن أضف فاصل صفحات في القسم تفصيل في الركن العلوي الأيسر وسمه pb1
الآن أضف الشفرة التاليه الى التقرير :
'A variable to keep last row number Dim lngLastRow As Long ' A variable to indicate, that it is necessary to add new page Dim blnForceNewPage As Integer 'How many rows will be linked to footer Const LINKROWS = 2
Sub ReportFooter4_Format (Cancel As Integer, FormatCount As Integer)
' MS Access can't place footer on the same page, then FormatCount = 2
If FormatCount > 1 And (Not blnForceNewPage) Then
' Remember last row number
lngLastRow = Val(Me![Enum])
' Ready to force new page
blnForceNewPage = True
End If
End Sub
Sub Detail1_Format (Cancel As Integer, FormatCount As Integer)
' If current row must be placed on the next page
If blnForceNewPage And (Val(Me![Enum]) + LINKROWS - 1 = lngLastRow) Then
' Make Page break visible - so force new page
Me![pb1].Visible = True
blnForceNewPage = False
Else
' Else hide page break control
Me![pb1].Visible = False
End If
End Sub