1.ที่ฟอร์มสร้างปุ่มเปิดรายงานไว้ 1 ปุ่ม ใส่โค้ดนี้เข้าไป
DoCmd.OpenReport "ชื่อรายงาน", acViewPreview
วิธีที่ 1 กำหนดrecordsource
2.ที่รายงานใส่โค้ดนี้เข้าไป
(ถ้าเป็นฟอร์มที่มีซัพฟอร์ม)
Private Sub Report_Open(Cancel As Integer)
On Error Resume Next
Me.RecordSource = [Forms]![ชื่อฟอร์มหลัก]![ชื่อฟอร์มย่อย].Form.RecordSource
End Sub
(ถ้าเป็นฟอร์มเดี่ยว)
Private Sub Report_Open(Cancel As Integer)
On Error Resume Next
Me.RecordSource = [Forms]![ชื่อฟอร์มหลัก].Form.RecordSource
End Sub
วิธีที่ 2 RecordsetClone
ที่ปุ่มเปิดรายงานใส่โค้ดนี้เข้าไป
Private Sub Command56_Click()
Dim strWhere As String
Me.Dirty = False
With Me.Recordset.Clone
Do Until .EOF
strWhere = strWhere & "," & !ID
.MoveNext
Loop
End With
strWhere = Mid(strWhere, 2)
DoCmd.OpenReport "rpt", acViewReport, WhereCondition:="ID In (" & strWhere & ")"
End Sub
หมายเหตุ rpt คือชื่อรายงานนะครับ โดยส่วนตัวผมชอบใช้ RecordsetClone นะครับเพราะถ้ากรณีที่เรามีการกรองข้อมูลในฟอร์มแบบ Datasheet ข้อมูลก็จะแสดงที่รายงานเหมือนฟอร์มทุกประการ