พิมพ์ รายงานเป็นชุด
กระทู้เก่าบอร์ด อ.Yeadram

 785   4
URL.หัวข้อ / URL
พิมพ์ รายงานเป็นชุด

พิมพ์ รายงานเป็นชุด
ตัวอย่างตาราง
COMP_ID     CODE     COMP_NAME     THAI_NAME     COMTYPE     NO_ICOM
1     ACD     ACDON     บริษัท แอคดอน จำกัด     1     1004
2     ASIANP     ASIAN PHARMACEUTICAL     บริษัท เอเชี่ยนฟาร์มาซูติคัล     1     1013
3     ASIANT     ASIAN THAI JAPAN DRUGS     บริษัท เอเชี่ยน ที เจ ดี เอ็นเตอร์ไพรซ์ จำกัด     1     1014
4     ASTA     ASTA MEDICA     บริษัท แอสต้า เมดิก้า จำกัด     1     1015
5     ASTRA     ASTRA     บริษัท แอสตรา จำกัด     1     1017
6     ATC     ATLANTIC     บริษัท แอตแลนติค ฟาร์มาซูติคอล จำกัด     1     1019
7     BDF     BDF     บริษัท บีดีเอฟ จำกัด     1     1024
8     BJC     BJC TRADING COMPANY     บริษัท บีเจซี เทรดดิ้ง จำกัด     1     1032
..     ..     ..     ..     ..     ..
แต่ละ record ต้องการพิมพ์ report ซึ่งมี 3 แบบ คือ report1, report2, report3
ปัจจุบัน โคดเวลาสั่งพิมพ์ คือ
DoCmd.OpenReport " report1", acViewNormal, "", "", acNormal
DoCmd.OpenReport " report2", acViewNormal, "", "", acNormal
DoCmd.OpenReport " report3", acViewNormal, "", "", acNormal
เมื่อพิมพ์ออกมา จะได้
Report1 ของ COMP_ID = 1,2,3,4,5,6,7,8,..    ออกมาตามลำดับ ต่อมาคือ
Report2 ของ COMP_ID = 1,2,3,4,5,6,7,8,..    ออกมาตามลำดับ สุดท้ายคือ
Report3 ของ COMP_ID = 1,2,3,4,5,6,7,8,..
ทำให้ต้องมาเรียงเอกสารให้เป็นชุดๆอีกที
ความต้องการคือ เมื่อสั่งพิมพ์ แล้วให้ report ออกมาดังนี้
Report1 , Report2, Report3 ของ COMP_ID =1 ลำดับต่อไปคือ
Report1 , Report2, Report3 ของ COMP_ID =2 ลำดับต่อไปคือ
.........
Report1 , Report2, Report3 ของ COMP_ID =..
ต้องใช้คำสั่งยังไงครับ รบกวนอาจาร์ ย แนะนำด้วย ครับ

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R24220
คุณก็ Design Report ขึ้นมาใหม่ โดยเอา control ที่อยู่ใน Report1 , Report2, Report3 มายำรวมกันในที่เดียวก็ได้แล้วครับ
2 @R24222
ไม่รู้เข้าใจความต้องการถูกป่าวนะครับ แต่ลองทำอย่างนี้ดูว่าได้ไม๊
- ตอนสั่งพิมพ์เราต้องหาหน้าทั้งหมดของรายงานให้ได้ก่อน แล้วใช้การลูปสลับตัวรายงาน 1,2,3 ที่ละหน้าไปเรื่อยๆ

1. ก่อนอื่นในรายงาน Report1 ต้องสร้าง Textbox 1 ตัวที่ Footer แล้วกำหนดที่ Control Source: =[Pages]
เป็นการแสดงตัวเลขจำนวนหน้าทั้งหมดของรายงาน จะแสดงมันไว้หรือซ่อนโดยกำหนด Visible เป็น No ก็ได้ แต่ต้องมีมันไว้ในรายงาน (หากมีการทำแล้วก็ข้ามไป)

2. ใส่โค้ดนี้ที่ปุ่มสั่งพิมพ์
---------------------------------------------------------------------
On Error GoTo CancelExit:
    DoCmd.OpenReport "Report1", acViewPreview
    Dim lastPage As Integer
    Dim i As Integer
    lastPage = Reports!Report1.Pages ' หากไม่ได้ทำตามข้อ 1 ตรงนี้จะมีค่าเป็น 0 ซึ่งจะใช้ไม่ได้
    DoCmd.Close acReport, "Report1"
    For i = 1 To lastPage
        DoCmd.OpenReport "Report1", acViewPreview
        DoCmd.PrintOut , i, i, acHigh, 1
        DoCmd.OpenReport "Report2", acViewPreview
        DoCmd.PrintOut , i, i, acHigh, 1
        DoCmd.OpenReport "Report3", acViewPreview
        DoCmd.PrintOut , i, i, acHigh, 1
    Next i
CancelExit:
        DoCmd.Close acReport, "Report1"
        DoCmd.Close acReport, "Report2"
        DoCmd.Close acReport, "Report3"
--------------------------------------------------------------------
ประมาณนี้ครับ

ปล. โค้ดนี้ผมลองกับการพิมพ์ไฟล์ pdf ดูเท่านั้นนะครับ ไม่ได้ลองกับเครื่องพิมพ์กระดาษจริง แต่คิดว่าน่าจะใช้ได้ ลองดูครับ
3 @R24227
ขอบคุณอาจาร์ยทั้งสองมากครับ
เดี๋ยวจะลองทำตามดูครับ
4 @R24230
ได้แล้วครับ
ตามแบบที่ อาจาร์ย TTT แนะนำเลยครับ
ขอบคุณอาจาร์ยทั้งสองมากครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3265s