มีวิธีสั่งปริ๊น โดยไม่ต้อง พรีวิวไหม
กระทู้เก่าบอร์ด อ.Yeadram

 4,204   17
URL.หัวข้อ / URL
มีวิธีสั่งปริ๊น โดยไม่ต้อง พรีวิวไหม

คือผมใช้คำสั่งด้านล่างนี้สั่งปริ๊นจากหน้าฟอร์ม แต่เอกสารที่ผมต้องการปริ๊น
มีทั้งหมด 8 ชุด เวลาปริ๊น มันก็จะเปิดหน้าที่จะปริ๊น สั่งปริ๊น แล้วก็ปิดรายงาน
ทำแบบนี้ทั้งหมด 8 ครั้ง เครื่องผม สเปคมันก็ไม่ค่อยสูงนัก เวลามันโหลดรายงานขึ้นมาแต่ละทีก็เลยต้องใช้เวลาหน่อย

เลยอยากจะทราบว่ามีวิธีที่เราจะสั่งปริ๊นได้เลย โดยที่ไม่ต้องแสดง พรีวิว
ก่อนได้ไหม แบบว่า ระบุืชื่อรายงาน ระบุหน้า แล้วก็ปริ๊นเลย
ถ้าทำได้มันก็จะได้เบาแรง เจ้าคอมความเร็วเต่า ของผมไปได้เยอะเลยครับ
รบกวน ทุกท่านแนะนำด้วยครับ

DoCmd.OpenReport "Rp001", acViewPreview
DoCmd.PrintOut acPages, sig, sig
DoCmd.Close acReport, "Rp001"

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

1 @R04362
เอาแบบง่ายๆเลยก็คือ สร้างมาโครขึ้นมาตามรูปนี้นะครับ



แล้วก็สั่งรันมาโครนี้ จากปุ่มคำสั่งเดิมของคุณครับ
2 @R04363
เพิ่มเติมครับ
หน้าที่จะปริ๊น มาจาก เท็กบ็อกซ์ที่ OnForm อยู่ในขณะนั้น

sig = CLng(Left(ID, 3))

3 @R04365
ลองแล้วครับ ชุดแรกมันออกมาตามหน้าที่เรา ระบุไว้ ตามนี้

sig = CLng(Left(ID, 3))
DoCmd.OpenReport "Rp001", acViewPreview
DoCmd.PrintOut acPages, sig, sig
DoCmd.Close acReport, "Rp001"

แต่พอชุดแรกหมด

มันสั่งพิมพ์หมดทุกหน้าต่อเลยครับ มี 8 รายงาน
ก็ออกมาทุกหน้า ของ 8 รายงานเลยครับ

รบกวนด้วยครับ
4 @R04366
จากตัวอย่างมาโครที่แนะนำ มันไม่น่าจะพิมพ์รายงานอื่นๆนอกจากที่เราระบุในมาโครนั้นได้
ลองสั่นรันมาโครอย่างเดียว โดยยังไม่ต้องไปผูกมาโครนี้กับอะไร ดูซิว่ามันโอเคไหม
5 @R04368
ลองแล้วครับ มันไม่ขึ้นพรีวิว แต่ว่ามันสั่งปริ๊นทั้งรายงานเลย
ผมต้องการให้มันสั่งปริ๊น แค่หน้าที่มีเลขหน้าเท่ากับ
เท็กบอกซ์ ที่ชื่อว่า ID ตามโค้ด ด้านล่างนี้ น่ะครับ

sig = CLng(Left(ID, 3))
DoCmd.OpenReport "Rp001", acViewPreview
DoCmd.PrintOut acPages, sig, sig
DoCmd.Close acReport, "Rp001"

แต่ผมมีทั้งหมด 8 รายงาน
ที่ต้องการให้มันปริ๊นเฉพาะหน้าที่ต้องการน่ะครับ

ท่านใดพอจะแนะนำได้ ก็ขอรบกวนด้วยครับ

ขอบคุณ คุณ "ผ่านมา" ที่สละเวลามาตอบให้ครับ
6 @R04369
เท่าที่ทราบ ถ้าต้องการพิมพ์เลือกหน้า มันก็ต้องพรีวิวก่อนครับ ไม่ก็...ซื้อแรมเพิ่ม หรือเปลี่ยนเครื่องใหม่เลย (ตอบสไตล์ไมโครซอฟท์เลย )
7 @R04370
เรียนคุณ นครินทร์
ผมไม่ค่อยเข้าใจความต้องการของคุณเท่าใดนัก แต่ขอเดาว่าคุณต้องการเลือกหน้าเอกสารที่ต้องการพิมพ์(ไม่ได้พิมพ์ทั้งหมด) งั้นลองแบบนี้นะครับ
สร้างมาโครตามรูปนี้



แล้วเพิ่มคำสั่งที่มาโครเดิมอีกหนึ่งคำสั่งตามรูปในกระทู้ถัดไปครับ
8 @R04371
คำสั่งที่สองครับ



ลองดูนะครับ
9 @R04372
คุณมีกี่รายงานก็สร้างมาโครแบบเดียวกันนี้ ของแต่ละรายงานครับ
จากนั้นคุณก็ไปเขียนโค้ดให้รันมาโครที่ต้องการเท่านั้น เช่น
DoCmd.RunMacro....... หรือหากไม่ต้องการเขียนโค้ด คุณก็สั่งรันมาโครได้จาก Event ที่ต้องการ ตามรูปนี้ก็ได้ครับ



10 @R04373
" เท่าที่ทราบ ถ้าต้องการพิมพ์เลือกหน้า มันก็ต้องพรีวิวก่อนครับ ไม่ก็...ซื้อแรมเพิ่ม หรือเปลี่ยนเครื่องใหม่เลย "

ถ้าเป็นอย่างนั้น ก็คงต้องทำใจ กับ ทนรอ อย่างเดียวละครับ
ขอบคุณ อ.สันติสุข ครับผม

ขอบคุณ คุณ "ผ่านมา" ที่สละเวลา ให้คำแนะนำครับ
ต้องขออ??ัย ที่อธิบายความต้องการ ไม่ชัดเจนด้วยครับผม
ทำให้เข้าใจไม่ตรงกัน   ขอบคุณมากครับผม
11 @R04374
ที่ MAcro ลองเล่นคำสั่ง PrintOut ดูนะครับ ใส่จำนวนว่าจะเอากี่ชุดก็ได้ครับ ถ้าเป็นAccess2007จะไม่แสดงคำสั่งนี้ เขียนเข้าไปก็ไม่ได้ ผมเลยเปิด Access2003 แล้วCopyเข้ามาวางครับ
ไม่รู้ว่าตรงคำถามรึเปล่า เผื่อช่วยได้บ้าง แหะๆ

12 @R04375
แก้ไขรูปที่1ครับ รูปมันซ้ำ รูปนี้ให้มันตรงกับฟอร์มที่เปิดครับ

13 @R04377
ผมไม่ค่อยเก่งเรื่องโค้ดน่ะครับ
เท่าที่ดู ถ้าเดาไม่ผิด
เป็นการใช้ คำสั่ง OpenReport กรองเอาหน้าที่เราต้องการใช่ไหมครับ
แล้วใช้คำสั่ง PrintOut สั่งปริ๊น ทั้งหมด โดยที่ไม่ต้อง Preview
จะลองเอาไปศึกษาดูครับ

ขอบคุณสำหรับคำแนะนำครับ
14 @R04380
ใช่ครับ ให้มัน OpenReport แล้วปริ๊น ตามOrderID ที่กำลังเปิดอยู่ที่หน้าฟอร์มในขณะนั้นน่ะครับ
ถ้าไม่เอาตาม OrderID ก็เลือกชื่อฟิล์ดอื่นแทนเอาครับ
15 @R04381
ถ้าจะรบกวน ขอ โค้ดลงให้ชัดๆ พร้อมกับคำอธิบาย
ด้วยสักเล็กน้อย พอเข้าใจ พอคลำทางไปต่อได้
จะได้ไหมครับ   ไม่ค่อยเก่งเรื่องโค้ดน่ะครับ

ต้องขอรบกวนอีกสักครั้งครับผม
16 @R04383
ทำได้แล้วครับ หลังจาก งม อยู่เกือบ ชั่วโมง
ขอบคุณคุณ "BenTen" มากครับ
ที่สละเวลามาให้คำแนะนำ

ขอบคุณครับผม
17 @R04389
ขอโทษครับ ที่ยังไม่ทันเพิ่มเนื้อหาต่อครับ พึ่งกลับมาครับ ยินดีด้วยนะครับผม
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3352s