กระทู้เก่าบอร์ด อ.Yeadram
859 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 =..
ต้องใช้คำสั่งยังไงครับ รบกวนอาจาร์ ย แนะนำด้วย ครับ
ตัวอย่างตาราง
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 ดูเท่านั้นนะครับ ไม่ได้ลองกับเครื่องพิมพ์กระดาษจริง แต่คิดว่าน่าจะใช้ได้ ลองดูครับ
- ตอนสั่งพิมพ์เราต้องหาหน้าทั้งหมดของรายงานให้ได้ก่อน แล้วใช้การลูปสลับตัวรายงาน 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 แนะนำเลยครับ
ขอบคุณอาจาร์ยทั้งสองมากครับ
ตามแบบที่ อาจาร์ย TTT แนะนำเลยครับ
ขอบคุณอาจาร์ยทั้งสองมากครับ
Time: 0.3619s