พิมพ์ Report หน้า-หลัง
กระทู้เก่าบอร์ด อ.Yeadram

 1,396   1
URL.หัวข้อ / URL
พิมพ์ Report หน้า-หลัง

เรียน อ. ทุกท่านครับ

ผมมี report 2 ชุดแต่ละชุด พิมพ์ออกมาอย่างละ 1 หน้า (report A ,report B)
report A และ report B มีหน้าตาต่างกัน
report A เป็นหน้าปกนักเรียน report B เป็น ข้อมูลเกรดนักเรียนแต่ละคน
เครื่องพิมพ์ของผมสามารถสั่งพิมพ์ กลับหน้าหลังได้เลย
ปัจจุบันที่ทำอยู่ตอนนี้ จะพิมพ์ Report A ก่อน แล้วไปกลับด้านที่กระดาษ
แล้วสั่งพิมพ์ report B อีกครั้ง คือวิ่งกระดาษ 2 เที่ยว
ปัญหาจะเกิดถ้าเรียงกระดาษผิดคน ปกกับข้อมูลจะเป็นคนละคนกัน

จึงคิดจะใช้ความสมารถของเครื่องพิมพ์ที่พิมพ์กลับหน้า-หลังได้
คืออยากจะให้ พิมพ์ report A หน้าปกของคนที่ 1 แล้วพิมพ์ report ฺB ของคนที่ 1
เลย โดยใช้ความสามารถในการกลับกระดาษเองของเครื่องพิมพ์
จะมีวิธีสั่งอย่างไรครับ จะเขียนเป็น VBA ได้หรือเปล่าครับ

ที่คิดไว้คือ รวม report A กับ report B เลย แต่ติดตรงที่ รูปแบบ report ทั้ง 2
ไม่เหมือนกัน ทั้งหัวกระดาษ ท้ายกระดาษ detail ข้อมูล เลยไม่รู้ว่าจะแก้อย่างไรครับ ข้อคำแนะนำด้วย
ขอบคุณครับ

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

1 @R17554
เท่าที่คิดได้ตอนนี้ คงต้องซิกแซกสักหน่อย วิธีตรงๆคงไม่มี คือให้ติดตั้งโปรแกรม bullzip pdf printer ไปหาใน google ได้นะครับ เอาเวอร์ชั่นที่ให้ใช้ฟรีมาติดตั้ง โปรแกรมนี้จะทำหน้าที่สร้าง virtual printer ขึ้นมา เราสามารถกำหนดได้ว่า เมื่อสั่งพิมพ์ออกพรินเตอร์ตัวนี้จะให้เก็บเป็นไฟล์อะไรแทนการพิมพ์ออกมาจริงๆโดยใช้โปรแกรม bullzip pdf printer option ที่ติดตั้งมาพร้อมกัน มีหลายฟอร์แมทให้เลือก โดยปกติก็คือไฟล์ pdf ในส่วนของ general - output - file name เราสามารกำหนดชื่อไฟล์ที่จะเก็บได้ เพื่อแก้ปัญหานี้ เราต้องตั้งชื่อไฟล์คงที่ เช่น c:\output.pdf แล้วให้เลือกตัวเลือก append if output exists เอาไว้ แล้วเราก็ตั้งให้ทั้ง report A และ B ใช้เครื่องพิมพ์ตัวนี้ ดังนั้นเมื่อพิมพ์ออกมา ผลลัพธ์ก็จะไปต่อท้ายไฟล์ output เดิมที่มี ทำให้เป็นไฟล์เดียวกันได้ เมื่อออก report จนครบแล้ว คุณก็พิมพ์ output.pdf ออกพรินเตอร์ตัวจริงที่กำหนดให้พิมพ์หน้าหลังไว้ ผลลัพธ์ก็จะออกมาตามที่คุณต้องการ ทีนี้ผมไม่รู้ว่าคุณเลือกข้อมูลด้วยวิธีไหนเพื่อมาพิมพ์ report A / B เอาเป็นว่าถ้าคุณเขียนโปรแกรมได้ คุณก็สร้าง recordset สำหรับข้อมูลที่จะพิมพ์แต่ละชุด แล้วก็พิมพ์รายงาน A/B ด้วยเงื่อนไขของฟิลด์ที่มีค่าตรงกับฟิลด์ที่ได้จาก recordset ให้วนลูปพิมพ์จนหมด หลังสั่งพิมพ์ออกพรินเตอร์จริงแล้ว อย่าลืมลบ output.pdf ออกไปด้วย ไม่งั้นสั่งครั้งหน้ามันก็จะไปต่อท้ายไฟล์อีกเช่นกัน โครงสร้างของโค้ดก็จะเป็นลักษณะ

dim DB as DAO.Database
dim RS as DAO.Recordset

set DB = currentDB
set RS = DB.openrecordset("select .....") ' สร้างเรคอร์ดของ report A
do while not RS.EOF
   docmd,openreport "report A", , , "เงื่อนไข"
   docmd,openreport "report B", , , "เงื่อนไข"
   RS.movenext
loop
rs.close: set rs = nothing
set db = nothing

ลองไปเล่นดูนะครับ ส่วนคำสั่ง openrecordset และ openreport ก็หาจากกระทู้เก่าได้ มีมากมายทีเดียว
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2238s