ผม DIY เอานะครับ
ผมสมมุติตารางหลักชื่อ table1
ตารางที่ออกรายงานชื่อ Table1Report โดยใช้การ Maketable โดยได้เพิ่ม Field Addrow มาด้วย
โดยใช้
totalRec = DCount("*", "table1") 'นับจำนวนแถวทั้งหมดของตาราง table1
totalRec = 15 - ([totalRec] Mod 15) 'เพื่อให้ได้ จำนวนแถวที่ขาดหายไป
แล้วใช้โค้ด Addnew เพื่อเพิ่มแถวที่ขาดหายไปยังตาราง Table1Report
เท่านั้นก็จะได้แถวครบ 15 แถวในหน้าสุดท้ายแล้วครับ โดยโค้ดสามารถดูได้จากปุ่ม เปิดรายงานบนฟอร์มนะครับ
Private Sub Command0_Click()
Dim totalRec As Integer
Dim RS As DAO.Recordset
Dim i As Integer
Dim sql As String
totalRec = DCount("*", "table1") 'นับจำนวนแถวทั้งหมดของตาราง table1
totalRec = 15 - ([totalRec] Mod 15) 'หาจำนวนแถวที่ขาดหายไปที่ไม่ครบ 15แถว
If Not totalRec = "15" Then
sql = "SELECT ' ' AS AddRow, Table1.* INTO Table1Report FROM Table1;" 'สั่งให้มีการสร้างตารางซัฟ ขึ้นมาเพื่อใช้แสดงรายงาน
DoCmd.SetWarnings False
DoCmd.RunSQL sql
DoCmd.SetWarnings True
For i = 1 To totalRec
Set RS = CurrentDb.OpenRecordset("table1Report", dbOpenDynaset) 'add แถวที่เหลือไปยังตาราง สำรอง
RS.AddNew
RS![Addrow] = " " & i
RS.Update
Next
RS.Close
Set RS = Nothing
Else 'ถ้าเช็คแล้ว ไม่เกิน 15 คือครบทุกหน้าก็ให้ทำงานที่คำสั่ง ล่าง Else ครับ
sql = "SELECT ' ' AS AddRow, Table1.* INTO Table1Report FROM Table1;" 'สั่งให้มีการสร้างตารางซัฟ ขึ้นมาเพื่อใช้แสดงรายงาน
DoCmd.SetWarnings False
DoCmd.RunSQL sql
DoCmd.SetWarnings True
End If
DoCmd.OpenReport "rptdemo", acViewPreview
End Sub
และในส่วนของ รายงานแก้เป็นแบบนี้นะครับ
Private Sub รายละเอียด_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount = 1 Then curTotal = Nz(curTotal, 0) + Nz(Me.Amount, 0)
End Sub