กระทู้เก่าบอร์ด อ.Yeadram
3,548 8
URL.หัวข้อ /
URL
ต้องการสั่งพิมพ์รายงานหน้าล่าสุดต้องใส่โค้ดยังไงค่
สมมุติว่าปิดชั้นป้อนข้อมูลอยู่ตอนนี้ในฟอร์มเรียบแล้วแล้ว และดิชั้นได้สร้างรายงานสำหรับฟอร์มที่ป้อนลงไปเรียบแล้วเหมือนกัน และต้องการจะพิมพ์รายงานหน้านี้แหละค่ะ ดิชั่นต้องใส่โค้ดยังไค่ะ
คือ กรุณาช่วยตอบหน่อยนะค่ะ คือประมาณว่าต้องใส่โค้ที่ตรง
ไหน ไปทำสั่งอะไร ถ้าไปที่ปุ่มมาร์โคดิชั้่นพอทำได้แต่ไม่ค่อยเก่ง ส่วนเรื่องโค้ดอันอื่นที่ขึ้นต้นด้วย private อะไร sub from,Docmd อะไรพวกนี้ดิชั้่นไม่เข้าใจเลยค่ะ (เพ่ิงเริ่มACEESทำได้ไม่นานค่ะ) ขอบคุณที่ช่วยตอบนะค่ะ
คือ กรุณาช่วยตอบหน่อยนะค่ะ คือประมาณว่าต้องใส่โค้ที่ตรง
ไหน ไปทำสั่งอะไร ถ้าไปที่ปุ่มมาร์โคดิชั้่นพอทำได้แต่ไม่ค่อยเก่ง ส่วนเรื่องโค้ดอันอื่นที่ขึ้นต้นด้วย private อะไร sub from,Docmd อะไรพวกนี้ดิชั้่นไม่เข้าใจเลยค่ะ (เพ่ิงเริ่มACEESทำได้ไม่นานค่ะ) ขอบคุณที่ช่วยตอบนะค่ะ
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R19131
ต้องการสั่งพิมพ์รายงานเฉยๆ
หรือเป็นรายงานที่ระบุหน้าว่าเป็นหน้าสุดท้ายกันแน่ครับ
จะได้ตอบถูก
หรือเป็นรายงานที่ระบุหน้าว่าเป็นหน้าสุดท้ายกันแน่ครับ
จะได้ตอบถูก
3 @R19133
ทำได้หลายวิธีครับ แต่วิธีที่ผมชอบใช้คือ วิธีเขียนเงื่อนไขที่คิวรี่เพื่ออ้างอิงมาที่ฟอร์ม เช่น
สมมุติฟอร์มที่คุณกำลังเปิดอยู่นี้ ชื่อ F_Input มีฟิวด์ Emp_ID เป็น PrimaryKey และคุณได้สร้างรายงานไว้แล้วตัวนึงจากฟอร์มนี้ สมมุติชื่อ R_Emp ซึ่งฟอร์มนี้สมมุติว่าข้อมูลมาจากตารางชื่อ Employees ผมก็จะทำรายงานนี้ขึ้นมาโดยสร้างจากคิวรี่ที่ดึงข้อมูลมาจากตาราง Employees นี้ แล้วค่อยไปเขียนเงื่อนไขที่ฟิวด์ Emp_ID เป็น Forms![F_Input]![Emp_ID] ที่ฟอร์ม F_Input สร้างปุ่มให้ไปเปิดรายงานตัวนี้ เป็นอันเสร็จสมบูรณ์ครับ
สมมุติฟอร์มที่คุณกำลังเปิดอยู่นี้ ชื่อ 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 ดิชั้นยังพอนึกออก เพราะว่า มันมี
ตัวหนังสือให้เราเลือกว่าเราจะใช้คำสั่งอะไร ก็ลอกจากของอาจารย์และคนที่เค้า
ตอบกระทู้กันมานี้แหละค่ะ ถ้าอาจารย์ทุกท่านที่ช่วยตอบ มีวิธีที่ดีกว่าที่ดิชันทำ ช่วยกรุณาแนะนำนหน่อยนะค่ะ ขอบคุณที่ช่วยแนะนำนะค่ะ
ดิชั้นลองทำแบบบ้านๆค่ะ คือ ดิชั้น ไปเรียงลำดับเลขที่ใบเสร็จจาก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
เงื่อนไขการสร้างรีพอร์ตเหมือนอันที่ผมแนะนำไปอันบนสุดนะครับ
ถ้าเอาไฟล์ตัวอย่างก็บอกนะครับ ผมทำเอาไว้แล้ว
ไม่ได้คิดจะว่ากล่าวอะไรทั้งสิ้น คือผมงงกับคำถามของคุณมากตรงที่ว่า
คุณต้องการอะไรกันแน่
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 ไฟล์ให้
แลกกันๆ ^_^
https://www.dropbox.com/sh/ig2emrh118hr92m/AADSVM3_vcOwbvu6czzxY3iga/BahtTextExcelTTT.accdb
แล้วใช้งานได้ก่อนครับ ผมถึงจะ Upload ไฟล์ให้
แลกกันๆ ^_^
Time: 0.3382s
สำหรับฟอร์มที่ป้อนลงไปเรียบแล้วเหมือนกัน จัดรูปแบบเรียบแล้วแล้วแค่สั่งพิมพ์
เฉยๆ และต้องการจะพิมพ์รายงานหน้านี้แหละค่ะ ดิชั่นต้องใส่โค้ดยังไค่ะ
คือ กรุณาช่วยตอบหน่อยนะค่ะ คือประมาณว่าต้องใส่โค้ที่ตรง
ไหน ไปทำสั่งอะไร ถ้าไปที่ปุ่ม MACRO ดิชั้่นพอทำได้แต่ไม่ค่อยเก่ง ส่วนเรื่อง
โค้ดอันอิื่นที่ขึ้นต้นด้วย private , sub from, Docmd อะไรพวกนี้ดิชั้่นไม่เข้าใจเลย
ค่ะ (เพ่ิงเริ่มACEESทำได้ไม่นานค่ะ) ขอบคุณที่ช่วยตอบนะค่ะ