ขนาดกระดาษในรายงาน
กระทู้เก่าบอร์ด อ.Yeadram

 14,341   11
URL.หัวข้อ / URL
ขนาดกระดาษในรายงาน

เรียนถาม อ.yeadram และผู้รู้ทุกท่านครับ
1. รายงานผมเป็นขนาด A3 เวลา print สามารถกำหนดให้พอดีกับ A4, Letter ได้ไหมครับ โดยการลด % เอาแบบนี้นะครับ
2. ผมมี .mdb อยู่ 3 อัน พอ print report ในแต่ละฐานข้อมูลมันก็จำอันหลังสุด เช่น 1.mdb report A3   2.mdb report A4   3.mdb report Letter พอ print 1.mdb ก็แสดงผลเป็น A3 ถูกต้อง แต่พอ print 2.mdb report มันก็แสดงเป็น A3 แทนที่จะเป็น A4 อ่ะครับ

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

1 @R00792
เรื่องนี้ต้องรบกวน อ.สันติสุข หรือผู้รู้ท่านอื่นๆ แล้วครับ
ผมเคยแว๊บๆ เห็นว่า
มีการใช้โค้ดคำสั่งกำหนด properties ของปริ๊นท์เตอร์
หรือมีการกำหนดขนาดหน้ากระดาษได้ ในขณะสั่งปริ๊นท์

แต่ผมไม่เคยทำ หรือนำมาทดสอบเลยครับ รออีกนิดให้ผู้รู้ท่านอื่นมาช่วยตอบนะครับ
2 @R00795
เรื่อง Report และ Printer พูดกี่ทีๆ ก็เป็นเรื่องปวดหัวเมื่อนั้นครับ

1) พิมพ์ย่อ/ขยาย มันเป็นคุณสมบัติของ Printer Driver เฉพาะยี่ห้อเฉพาะรุ่นครับ จริงๆแล้วถ้าเราใช้เครื่องพิมพ์ที่มีคุณสมบัตินี้แล้ว คิดว่าต้องมีวิธีโปรแกรมมิ่งให้ทำได้ครับ แต่ตรงนี้ขอยอมแพ้ครับ ผมไม่รู้จริงๆ

2) ขณะที่ทำการออกแบบรายงานใน Design View เราสามารถกำหนดขนาดกระดาษได้โดยเข้าเมนู File > Page Setup ... แล้วเลือก Paper Size ที่ต้องการครับ

แต่ถ้าต้องการกำหนดขนาดกระดาษโดยการเขียนโปรแกรม ถ้าเป็น Access 2000 หรือต่ำกว่าให้ดูที่ ACC: How to Change a Report's Printer Using Code ถ้าเป็นตั้งแต่ Access 2002 ขึ้นไปให้ดูที่ Programming Printer Settings in Microsoft Access 2002 และ How to reset changes to the Application.Printer object
3 @R00796
ขอบคุณมากครับ
เดี๋ยวผมจะลองดูครับ
4 @R00800
Prtinter บางรุ่น เราสามารถ Set ให้ลด % ลงได้ ก่อน Print
โดยการเข้าไป Set ที่ Properties ของ Printer นั้นๆ
แต่เท่าที่ทราบจะทำเป็น Case by Case

ส่วนใน Access ยังไม่เคยทำเหมือนกัน แต่เคยเก็บคำถาม-ตอบ
ในการ Set กระดาษต่อเนื่องไว้ดังน

Q. เรื่องการตั้งกระดาษพิมพ์ต่อเนื่อง
A. ให้เปิด Report เข้าไปในโหมด Design แล้วให้ไปที่เมนู
File>Page Setup...>Page tab>เลือก Use Specific Priter
ในช่อง Printer For ชื่อรายงาน>คลิกปุ่ม Printer...>คลิกปุ่ม Properties... >มองหาส่วนที่จะสามารถ Set ขนาดกระดาษได้เองดู เช่นหาปุ่มที่บอกว่า Custom Size หรือ กำหนดเฉพาะ

คือผมเคยตกม้าตายตรงที่ เวลาใช้กระดาษต่อเนื่อง พิมพ์เท่าไหร่ก็ตกหน้าทุกที่ ก็เลยฉีกกระดาษต่อเนื่องที่เขียนข้างกล่องว่า 9x11 ชั้น มาเทียบกับกระดาษ A4 (มีความยาว 9 cmx11 cm เหมือนกัน) สิ่งที่พบก็คือว่า กระดาษต่อเนื่องสั้นกว่า A4 0.5 นิ้ว (อกอีแป้นจะแตกหลงโง่มาตั้งนาน) ตั้งแต่นั้นมาก็เลยรู้ว่าเมื่อจะพิมพ์ออกกระดาษต่อเนื่อง ต้องมาใช้กระดาษ Lettel 8 1/2 x 11
ี้
ขอบพระคุณมากๆ ครับ
5 @R00801
ผมลองหาดูตามที่ อ.สันติสุข พรหมศิริ แนะนำ ก็ได้เจอตัวอย่างในการเซ็ตขนาดกระดาษได้ก่อนพิมพ์ และ ตัวอย่างการเลือก default printer ในฟอร์มก่อนพิมพ์ได้ แต่ก็มีปัญหาคือ
1 ถ้าเลือก printer แคร่สั้นก็จะไม่สามารถเซ็ตกระดาษเป็น A3 ได้
2 ถ้าเลือก default printer ในฟอร์มแล้ว มันก็จะเปลี่ยน default printer ใน windows xp เป็นตัวที่เรากำหนดในฟอร์มของ access ไปด้วย มันก็ยังมีผลกระทบต่อรายงานตัวอื่นๆ อยู่ดีครับ
6 @R00802
ไม่ค่อยเข้าใจครับ คือเราต้องการเลือกเฉพาะขนาดกระดาษนะครับ ไม่ได้ต้องการเลือกให้เป็น Default Printer

ปล. ถ้านามสกุลนั้นจริง ก็คงดีครับ
7 @R00803
คือเป็นแบบนี้ครับ ผมมีคอมและพิ้นเตอร์ 2 เครื่อง เครื่องที่ 1 + LQ1170(ยาว) ไว้พิมพ์รายงาน + ออกบิล เครื่องที่ 2 + LQ300(สั้น) ไว้ออกบิล + พิมพ์รายงาน ผมเลย map printer ไว้ทั้ง 2 ตัว ซึ่งในกรณีนี้ เครื่องที่ 2 นี้จะ print รายงาน A3 ก็เลยทำไม่ได้ ต้องเปลี่ยน default printer เป็นของ lq1170 ก่อนนะครับ
8 @R00808
ขอแจมกระทู้ด้วยครับ
สิ่งที่ควรหา
0 ต้องการปริ้นงาน โดยใช้กระดาษขนาดไหน
1 ปริ้นเตอร์ สามารถปริ้นกระดาษอะไรได้บ้าง
2 ปริ้นเตอร์ สามารถรองรับไดร์เวอร์ได้มากแค่ไหน
lq300 คิดว่าคงรองรับได้เฉพาะ A4 (ผมคิดเอง เนื่องจากแคร่มันสั้น) ดังนั้นต่อให้เปลี่ยน ไดร์เวอร์เพื่อที่จะให้ปริ้นกระดาษ A3 คงเป็นไปไม่ได้ (เดา เนื่องจากข้อจำกัดทางฮาร์ดแวร์)
lq1170 น่าจะชัวร์ มันสามารถปริ้นกระดาษ A3ได้ และเนื่องจาก A4เป็นขนาดที่เล็กกว่า ฟันธงได้ว่า มันครอบคลุมงานปริ้น ขนาด A3-A4
ขอบเขต
งานที่ต้องพิมพ์มีทั้งA3และA4 เครื่องพิมพ์มี lq300 กับ lq1170
แนวทาง
งานที่พิมพ์A3ใช้ lq1170
งานที่พิมพ์A4 ใช้ lq300
จากที่โพสต์ ผมเอามาคิดต่อเอง คุณได้แอดปริ้นเตอร์ไว้กับคอมแล้ว2ชุด
เครื่องที่ 1 + LQ1170(ยาว) ไว้พิมพ์รายงาน(A3,lq1170)
เครื่องที่ 2 + LQ300(สั้น) ไว้ออกบิล(A4,lq300)
หลังจากทำการแชร์ปริ้นเตอร์ และแมพมาแล้ว ทำให้สามาถปริ้นงานได้ตามต้องการ เป็น
เครื่องที่ 1 + LQ1170(ยาว) ไว้พิมพ์รายงาน + ออกบิล
เครื่องที่ 2 + LQ300(สั้น) ไว้ออกบิล + พิมพ์รายงาน

แต่คงไม่สะดวกในการสั่งปริ้นเนื่องจากโปรแกรมไม่สามารถรู้ได้ว่าเมื่อสั่งปริ้นรายงานตัวนี้แล้วให้ไปออกที่ปริ้นเตอร์ตัวไหน จึงต้องเลือกเครื่องปริ้น(set default printer) ก่อนทำการปริ้นงาน

สิ่งที่ต้องการ
codeหรือวิธี ที่จะทำให้ทราบว่า เมื่อปริ้นรายงานนี่แล้ว ให้ไปออกที่ปริ้นเตอร์เครื่องไหน
                                   ปล.ถ้าใช่ก็ขอด้วยคนนะครับ ถ้าไม่ใช่ก็ขออภัยด้วย :)




9 @R00810
ผมชักสงสัยว่าตกลงปัญหานี้ผ่านไปได้แล้วหรือยัง ?!?

ถ้าเราสามารถ fix ตายตัวว่ารายงานตัวไหนใช้กับเครื่องพิมพ์ตัวใด ก็ให้ทำตามข้อ 2) ที่ผมแนะนำไปข้างบน อันนี้คิดว่าไม่มีปัญหานะครับ

ต่อไป ... ถ้าอยากจะเลือกเครื่องพิมพ์ได้เอง ก็แทนที่จะสั่ง DoCmd.OpenReport ชื่อReport, acViewNormal ก็เปลี่ยนเป็น acViewPreview มันก็จะแสดง preview แทน แล้วเราก็สั่งพิมพ์จากเมนู File > Print ก็จะแสดงไดอะล็อกซ์ให้เลือกเครื่องพิมพ์ เราก็จะแก้ปัญหาได้แล้วโดยไม่ต้องอาศัยโค้ดอะไรเลย อาจไม่สะดวกเพราะว่าจะต้องเลือกเครื่องพิมพ์ทุกครั้ง ทีนี้ถ้าอยากให้สะดวกขึ้นมาอีกนิด คือให้มันจำได้ว่าก่อนนี้เลือกพิมพ์เครื่องพิมพ์ไหน ก็ preview แล้ว แล้วทำตามที่คุณ Suchat/ชลบุรี บอกไว้คือไปกำหนดเป็น Use Specific Priter แทนก็แก้ปัญหาได้เช่นกัน

โอเคไหมครับ

ขอแสดงความเสียใจต่อครอบครัวผู้สูญเสียชีวิตและอวัยวะจากการทำร้ายอันโหดเกินวิสัยมนุษย์ของตำรวจไทยมา ณ ที่นี้ด้ว?   และขอดวงวิญญาณผู้จากไปจงไปสู่สุขคติภพด้วยเถิด
10 @R00827
ok ครับ เข้าใจแล้วคับ
สรุป
?เซตค่าหน้ากระดาษ รวมถึง ตัวปริ้นเตอร์ ได้โดย
ขอก็อปมานะคับของ คุณSuchat/ชลบุรี
"Q. เรื่องการตั้งกระดาษพิมพ์ต่อเนื่อง
A. ให้เปิด Report เข้าไปในโหมด Design แล้วให้ไปที่เมนู
File>Page Setup...>Page tab>เลือก Use Specific Priter
ในช่อง Printer For ชื่อรายงาน>คลิกปุ่ม Printer...>คลิกปุ่ม Properties... >มองหาส่วนที่จะสามารถ Set ขนาดกระดาษได้เองดู เช่นหาปุ่มที่บอกว่า Custom Size หรือ กำหนดเฉพาะ"
?เซตรายงานออกปริ้นเตอร์ ได้โดย
ขอก็อปมานะคับ ของ คุณสันติสุข
"ไปกำหนดเป็น Use Specific Priter แทน"
                                      ขอบคุณทุกท่านครับ :)
11 @R01576
ลองใช้ function นี้ดูครับ

Function PrintDialog()
On Error Resume Next
   DoCmd.RunCommand acCmdPrint
On Error GoTo 0
End Function

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