ต้องการสั่งพิมพ์รายงานหน้าล่าสุดต้องใส่โค้ดยังไงค่
กระทู้เก่าบอร์ด อ.Yeadram

 3,445   8
URL.หัวข้อ / URL
ต้องการสั่งพิมพ์รายงานหน้าล่าสุดต้องใส่โค้ดยังไงค่

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

คือ กรุณาช่วยตอบหน่อยนะค่ะ คือประมาณว่าต้องใส่โค้ที่ตรง
ไหน ไปทำสั่งอะไร    ถ้าไปที่ปุ่มมาร์โคดิชั้่นพอทำได้แต่ไม่ค่อยเก่ง ส่วนเรื่องโค้ดอันอื่นที่ขึ้นต้นด้วย private อะไร sub from,Docmd อะไรพวกนี้ดิชั้่นไม่เข้าใจเลยค่ะ (เพ่ิงเริ่มACEESทำได้ไม่นานค่ะ) ขอบคุณที่ช่วยตอบนะค่ะ

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

1 @R19123
สมมุติว่าดิชั้นป้อนข้อมูลอยู่ตอนนี้ในฟอร์มเรียบแล้วแล้ว และดิชั้นก็ได้สร้างรายงาน

สำหรับฟอร์มที่ป้อนลงไปเรียบแล้วเหมือนกัน   จัดรูปแบบเรียบแล้วแล้วแค่สั่งพิมพ์

เฉยๆ และต้องการจะพิมพ์รายงานหน้านี้แหละค่ะ ดิชั่นต้องใส่โค้ดยังไค่ะ

คือ กรุณาช่วยตอบหน่อยนะค่ะ คือประมาณว่าต้องใส่โค้ที่ตรง

ไหน ไปทำสั่งอะไร    ถ้าไปที่ปุ่ม MACRO ดิชั้่นพอทำได้แต่ไม่ค่อยเก่ง ส่วนเรื่อง

โค้ดอันอิื่นที่ขึ้นต้นด้วย private , sub from, Docmd อะไรพวกนี้ดิชั้่นไม่เข้าใจเลย

ค่ะ (เพ่ิงเริ่มACEESทำได้ไม่นานค่ะ) ขอบคุณที่ช่วยตอบนะค่ะ

2 @R19131
ต้องการสั่งพิมพ์รายงานเฉยๆ
หรือเป็นรายงานที่ระบุหน้าว่าเป็นหน้าสุดท้ายกันแน่ครับ

จะได้ตอบถูก
3 @R19133
ทำได้หลายวิธีครับ แต่วิธีที่ผมชอบใช้คือ วิธีเขียนเงื่อนไขที่คิวรี่เพื่ออ้างอิงมาที่ฟอร์ม เช่น
สมมุติฟอร์มที่คุณกำลังเปิดอยู่นี้ ชื่อ F_Input มีฟิวด์ Emp_ID เป็น PrimaryKey และคุณได้สร้างรายงานไว้แล้วตัวนึงจากฟอร์มนี้ สมมุติชื่อ R_Emp ซึ่งฟอร์มนี้สมมุติว่าข้อมูลมาจากตารางชื่อ Employees ผมก็จะทำรายงานนี้ขึ้นมาโดยสร้างจากคิวรี่ที่ดึงข้อมูลมาจากตาราง Employees นี้ แล้วค่อยไปเขียนเงื่อนไขที่ฟิวด์ Emp_ID เป็น Forms![F_Input]![Emp_ID] ที่ฟอร์ม F_Input สร้างปุ่มให้ไปเปิดรายงานตัวนี้ เป็นอันเสร็จสมบูรณ์ครับ
4 @R19134
ขอบคุณค่ะ

ดิชั้นลองทำแบบบ้านๆค่ะ คือ ดิชั้น ไปเรียงลำดับเลขที่ใบเสร็จจากTable ที่มีข้อมูล

ที่ดิชั้นได้ป้อนไปก่อนนี้ ให้เรียงจากมากไปหาน้อย ซึ่งแน่นอนใบเสร็จมันจะต้อง

เรียงเลขสูงขึ้นไปเรื่อย 0001   0002   0003   0004 ไปเรื่อยๆ แบบนี้น่ะค่ แล้ว

เวลาข้อมูลมันไปเพ้ิมใน Table ถ้าอันไหนเป็นข้อมูลใหม่ มันก็จะไปแทรกด้านบน

สุดของบรรทัด เพราะว่าเราได้ไสั่งให้มันเรียงจากมากไปหาน้อย ฉะนั้นเวลาดิชั้น

มาพิมพ์ใบเสร็จ ดิชั่้นก็จะสั่งพิมพ์ใบเสร็จหมายเลขล่าสุดที่ดิชั้นป้อนข้อมูลลงไป

ได้เลยค่ะ แต่ดิชั่นว่าวิธีนี้มันบ้านๆเกินไปค่ะ อยากได้วิธีในเมืองมากกว่านี้ค่ะ

   แต่อยากให้อาจารย์ แนะนำว่า ต้องพิมพ์โค้ดยังไง ไปเขียนโค้ดที่ไหน เอาไป

แปะไว้ตรงไหน อย่างที่บอกนะค่ะ ดิัชั้นยังไม่เก่งเลยค่ะ   ภาษ C vba sql อะไร

พวกนี้ดิชั้น ไม่เป็นเลยค่ะ   ถ้าไปทำใน Macro ดิชั้นยังพอนึกออก เพราะว่า มันมี

ตัวหนังสือให้เราเลือกว่าเราจะใช้คำสั่งอะไร ก็ลอกจากของอาจารย์และคนที่เค้า

ตอบกระทู้กันมานี้แหละค่ะ      ถ้าอาจารย์ทุกท่านที่ช่วยตอบ มีวิธีที่ดีกว่าที่ดิชันทำ ช่วยกรุณาแนะนำนหน่อยนะค่ะ   ขอบคุณที่ช่วยแนะนำนะค่ะ
5 @R19135
วิธีบ้านๆอีกวิธีหนึ่งที่สามารถทำได้คือ ให้คุณทำรายงานจากคิวรี่ที่ดึงข้อมูลมาจาก Table แล้วเขียนเงื่อนไข (Criteria) ในคิวรี่ที่ฟิวด์เลขที่ใบเสร็จเป็น
[โปรดระบุเลขที่ใบเสร็จที่ต้องการพิมพ์]
6 @R19136
ก่อนอื่นผมขออนุญาตแสดงความเห็นนิดนึงนะครับ

ไม่ได้คิดจะว่ากล่าวอะไรทั้งสิ้น คือผมงงกับคำถามของคุณมากตรงที่ว่า
คุณต้องการอะไรกันแน่

1. ต้องการ Code VBA เพื่อสั่งพิมพ์เรคอร์ดสุดท้าย

หรือ

2. ต้องเพียงแค่พิมพ์เรคอร์ดสุดท้ายด้วยวิธีไหนก็ได้ จะ Macro หรือ VBA ก็ได้

=========================================================

เอาล่ะจบข้อสงสัย

คราวนี้มาถึงวิธีการที่ผมจะแนะนำนะครับ เป็นการใช้คำสั่งในมาโครง่ายๆ



วิธีนี้คุณไม่ต้องไปสั่งเรียงค่าอะไรทั้งสิ้น สามารถสร้างรายงานโดยตรงจากตารางได้
1. ผมมีตารางชื่อ tblBirthDate (มีฟิลด์ ID, Name, DOB)
2. ผมนำตารางมาสร้างเป็นรายงานชื่อ rptBirthDate ใช้ทุกฟิลด์
3. ผมสร้างมาโครตามรูป ส่วนสำคัญคือตรง Where ที่กำหนดให้ [ID]=DMax( "[ID]","tblBirthDate")

ซึ่งส่วนนี้เองจะเลือกค่า Max ของ ID ซึ่งค่า ID สูงสุด จะเป็นค่าสุดท้ายของข้อมูลนั่นเอง

======================================================

นอกจากวิธีนี้ก็ยังมีอีกหายวิธีที่จะพิมพ์เรคอ์ดสุดท้าย จะใช้ VBA ก็ได้ หรือจะทำอย่างที่คุณทำมาแล้วก็ได้ แต่ต้องทำเพิ่มอีกนิดเพื่อให้พ้นเขตบ้านที่คุณว่ามาอยู่เมืองอย่างที่ต้องการ

1. ที่คิวรีที่คุณทำการ Sort ข้อมูล Descending น่ะ ให้คุณไปสั่ง Top 1 ซะ คิวรีของคุณก็จะดึงเฉพาะเรคอร์ดสุดท้ายออกมาให้แล้ว
2. ถ้ารายงานคุณผูกไว้กับคิวรีอันนี้คุณก็สั่งพิมพ์ได้เลย โดยใช้ Macro สั่งพิมพ์ธรรมดาๆ

เพียงเท่านี้การพิมพ์รายงานก็จะเข้าสู่เขตเมืองทันที
====================================================

ถ้าจะใช้ VBA คุณต้องสร้างปุ่มแล้วใส่คำสั่งนี้เข้าไป (อันนี้เป็นคำสั่ง Print Preview ซึ่งถ้าคุณจะสั่งพิมพ์ทันทีคุณก็ต้องเปลี่ยนตรง acViewPreview เป็น acViewNormal

    DoCmd.OpenReport "rptBirthDate", acViewPreview, "", "[ID]=DMax(""[ID]"",""tblBirthDate"")", acNormal

เงื่อนไขการสร้างรีพอร์ตเหมือนอันที่ผมแนะนำไปอันบนสุดนะครับ

ถ้าเอาไฟล์ตัวอย่างก็บอกนะครับ ผมทำเอาไว้แล้ว
7 @R19203
งันดิัช้นขอไฟล์ตัวอย่างเลยได้ไหมค่ะคุณ ธัชชัย
8 @R19205
เปิดไฟล์ในลิงก์นี้

https://www.dropbox.com/sh/ig2emrh118hr92m/AADSVM3_vcOwbvu6czzxY3iga/BahtTextExcelTTT.accdb

แล้วใช้งานได้ก่อนครับ ผมถึงจะ Upload ไฟล์ให้

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