รันหมายเลขลำดับใน Report ใน Access


0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

06 ส.ค. 62 , 13:55:20
อ่าน 3678 ครั้ง

mtaccess

รันหมายเลขลำดับใน Report ใน Access
« เมื่อ: 06 ส.ค. 62 , 13:55:20 »
รบกวนสอบถามเกี่ยวกับการรันหมายเลขลำดับใน Report ใน Access
1.ต้องการให้รายงานแสดงหน้าละ 20 record ถ้าไม่ครบ 20 record ให้แสดงช่องว่างให้ครบ 20 record เช่น ถ้ามีข้อมูล 7 record ให้แสดงข้อมูล อันดับที่ 8-20 แสดงช่องว่างสำหรับสามารถปริ้นแล้วเขียนข้อมูลลงในนั้นได้ค่ะ
2.ต้องการให้รายงานรันหมายเลขลำดับที่ 1-40 ถ้ามีลำดับในข้อมูล 41 เป็นต้นไปให้เริ่มรันหมายเลขลำดับเป็น 1 ใหม่
รบกวนแนะนำด้วยค่ะ
ขอบคุณค่ะ

ตัวอย่างรายงาน
แสดงข้อมูลลำดับที่ 1-40 หน้าละ 20 แถว




ในกรณีที่มีข้อมลลำดับที่ 41 เป็นต้นไปให้รันหมายเลขลำดับใหม่ค่ะ และให้แสดงแถวให้ครบ 20 แถว ในกรณีไม่มีข้อมูลตามรูปนี้ค่ะ




« แก้ไขครั้งสุดท้าย: 07 ส.ค. 62 , 11:47:00 โดย mtaccess »

 

07 ส.ค. 62 , 16:41:22
ตอบกลับ #1

TTT

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #1 เมื่อ: 07 ส.ค. 62 , 16:41:22 »
เรื่องการทำเส้นให้เต็มในรายงานลองอ่านกระทู้นี้ดูนะครับ
https://www.thai-access.com/yeadram_view.php?topic_id=3065&PagePosition=1
ส่วนเรื่องเลขที่ตัดทุก 40 ใช้การเขียนคำสั่งหารสั้นเอาแต่เศษด้วยทำสั่ง Mod ที่เลขลำดับของเรา โดยใช้เงื่อนไข
=IIf([ID] Mod 40=0,40,[ID] Mod 40)
คือหารสั้นเอาแต่เศษด้วย 40 แต่ถ้าเศษเป็น 0 ให้เท่ากัย 40 วิธีนี้ ID ต้องเรียงเลขกันห้ามข้ามนะครับ
ไฟล์ตัวอย่าง
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

07 ส.ค. 62 , 17:22:08
ตอบกลับ #2

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #2 เมื่อ: 07 ส.ค. 62 , 17:22:08 »
เรื่องการทำเส้นให้เต็มในรายงานลองอ่านกระทู้นี้ดูนะครับ
https://www.thai-access.com/yeadram_view.php?topic_id=3065&PagePosition=1
ส่วนเรื่องเลขที่ตัดทุก 40 ใช้การเขียนคำสั่งหารสั้นเอาแต่เศษด้วยทำสั่ง Mod ที่เลขลำดับของเรา โดยใช้เงื่อนไข
=IIf([ID] Mod 40=0,40,[ID] Mod 40)
คือหารสั้นเอาแต่เศษด้วย 40 แต่ถ้าเศษเป็น 0 ให้เท่ากัย 40 วิธีนี้ ID ต้องเรียงเลขกันห้ามข้ามนะครับ
ไฟล์ตัวอย่าง

ขอบคุณมากๆนะคะ จะลองทำตามแนวทางที่แนะนำมา ได้ผลอย่างไรจะแจ้งให้อาจารย์ทราบนะคะ

 

08 ส.ค. 62 , 08:49:40
ตอบกลับ #3

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #3 เมื่อ: 08 ส.ค. 62 , 08:49:40 »
เรื่องการทำเส้นให้เต็มในรายงานลองอ่านกระทู้นี้ดูนะครับ
https://www.thai-access.com/yeadram_view.php?topic_id=3065&PagePosition=1
ส่วนเรื่องเลขที่ตัดทุก 40 ใช้การเขียนคำสั่งหารสั้นเอาแต่เศษด้วยทำสั่ง Mod ที่เลขลำดับของเรา โดยใช้เงื่อนไข
=IIf([ID] Mod 40=0,40,[ID] Mod 40)
คือหารสั้นเอาแต่เศษด้วย 40 แต่ถ้าเศษเป็น 0 ให้เท่ากัย 40 วิธีนี้ ID ต้องเรียงเลขกันห้ามข้ามนะครับ
ไฟล์ตัวอย่าง

หลังจากทดสอบแล้วติดปัญหาในกรณีที่ถ้ามีการลบข้อมูล ID ใน Table หมายเลขที่รันหายไปเลยค่ะ ตามรูปที่ส่งมา ซึ่งในการใช้งานจริง ID ต้องมีการลบอยู่แล้วค่ะ และข้อมูลจริงมีเยอะ 5000 กว่า Record ขึ้น และก่อนจะปริ้นรายงาน มีการค้นหาด้วยวันที่ด้วยค่ะ




« แก้ไขครั้งสุดท้าย: 08 ส.ค. 62 , 08:52:46 โดย mtaccess »

 

08 ส.ค. 62 , 09:56:24
ตอบกลับ #4

PNR

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #4 เมื่อ: 08 ส.ค. 62 , 09:56:24 »
ใช้การ Running Number Query มาช่วยก็ได้คับ
วิธีทำ 1 สร้างคิวรี่ชื่อ QryID ใส่โค้ดนี้
โค๊ด: [Select]
SELECT (Select count(*) From Table1 as a Where a.ID <= Table1.ID) AS [Running No], Table1.ID AS RID
FROM Table1;
2.ที่ RecordSource ของ Report ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
SELECT Table1.ID, Table1.[Product Name], Table1.Quantity, QryID.[Running No], *
FROM Table1 INNER JOIN QryID ON Table1.ID = QryID.RID;


3.สร้าง Textbox ขึ้นมาอีกอัน เอา Field RunningNo ใส่เข้าไปแล้วซ่อน textbox นี้ไว้นะครับ


4.ที่ textbox txtID ใส่โค้ดเป็นแบบนี้
โค๊ด: [Select]
=IIf([Running No] Mod 40=0,40,[Running No] Mod 40)
เท่านี้ก็จะรันลำดับอย่างถูกต้องแล้วคับ   :grin:
« แก้ไขครั้งสุดท้าย: 08 ส.ค. 62 , 10:09:35 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: TTT, mtaccess

08 ส.ค. 62 , 10:40:55
ตอบกลับ #5

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #5 เมื่อ: 08 ส.ค. 62 , 10:40:55 »
ใช้การ Running Number Query มาช่วยก็ได้คับ
วิธีทำ 1 สร้างคิวรี่ชื่อ QryID ใส่โค้ดนี้
โค๊ด: [Select]
SELECT (Select count(*) From Table1 as a Where a.ID <= Table1.ID) AS [Running No], Table1.ID AS RID
FROM Table1;
2.ที่ RecordSource ของ Report ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
SELECT Table1.ID, Table1.[Product Name], Table1.Quantity, QryID.[Running No], *
FROM Table1 INNER JOIN QryID ON Table1.ID = QryID.RID;


3.สร้าง Textbox ขึ้นมาอีกอัน เอา Field RunningNo ใส่เข้าไปแล้วซ่อน textbox นี้ไว้นะครับ


4.ที่ textbox txtID ใส่โค้ดเป็นแบบนี้
โค๊ด: [Select]
=IIf([Running No] Mod 40=0,40,[Running No] Mod 40)
เท่านี้ก็จะรันลำดับอย่างถูกต้องแล้วคับ   :grin:


เดี๋ยวจะลองดูนะคะ ได้ผลยังไงจะมารายงานนะคะ ขอบคุณมากๆนะคะ

 

08 ส.ค. 62 , 13:29:34
ตอบกลับ #6

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #6 เมื่อ: 08 ส.ค. 62 , 13:29:34 »
ใช้การ Running Number Query มาช่วยก็ได้คับ
วิธีทำ 1 สร้างคิวรี่ชื่อ QryID ใส่โค้ดนี้
โค๊ด: [Select]
SELECT (Select count(*) From Table1 as a Where a.ID <= Table1.ID) AS [Running No], Table1.ID AS RID
FROM Table1;
2.ที่ RecordSource ของ Report ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
SELECT Table1.ID, Table1.[Product Name], Table1.Quantity, QryID.[Running No], *
FROM Table1 INNER JOIN QryID ON Table1.ID = QryID.RID;


3.สร้าง Textbox ขึ้นมาอีกอัน เอา Field RunningNo ใส่เข้าไปแล้วซ่อน textbox นี้ไว้นะครับ


4.ที่ textbox txtID ใส่โค้ดเป็นแบบนี้
โค๊ด: [Select]
=IIf([Running No] Mod 40=0,40,[Running No] Mod 40)
เท่านี้ก็จะรันลำดับอย่างถูกต้องแล้วคับ   :grin:


เดี๋ยวจะลองดูนะคะ ได้ผลยังไงจะมารายงานนะคะ ขอบคุณมากๆนะคะ

ได้ลองนำไปใช้กับงานจริง ปรากฏว่าลำดับไม่เรียงจาก 1-40 ค่ะ และในแต่ละหน้าของรายงานต้องการให้แสดงหน้าละ 20 แถวค่ะ


 

08 ส.ค. 62 , 13:50:13
ตอบกลับ #7

PNR

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #7 เมื่อ: 08 ส.ค. 62 , 13:50:13 »
น่าจะเพิ่มผิดตรงไหนสักจุดครับ Inbox มาครับ

ID กำหนด DATA TYPE เป็น text หรือเปล่าครับ
ปกติตรงนี้ผมกำหนดเป็น Number ครับ

ถ้าเป็น Text ใช้ Cint แปลงเป็น ตัวเลขก่อนคับ

ถ้าข้อมูล ID NO เป็น Text ลองใช้การแปลง Text เป็นตัวเลข ก่อน โดยผมสร้าง QryTable1 ขึ้นมาแสดงข้อมูลของ Table1 นะครับ

ตัวอย่างด้านล่าง
« แก้ไขครั้งสุดท้าย: 08 ส.ค. 62 , 14:16:49 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: TTT, mtaccess

08 ส.ค. 62 , 14:30:18
ตอบกลับ #8

TTT

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #8 เมื่อ: 08 ส.ค. 62 , 14:30:18 »
ถ้าเป็นในรายงานเราสามารถทำ Running Sum ได้เลย โดยการสร้าง Text Box เปล่าๆ ขึ้นมาใหม่ สมมุติชื่อ txtrun แล้วกำหนด Control Source: =1 กำหนดตรง Running Sum: Over All (หรือ Over Group หากสร้าง Group)
เราจะได้เลยที่เรียงลำดับขึ้นมา จากนั้นก็เปลี่ยนเงื่อนไขใน Text Box ที่เรานับเลข 1-40 ใหม่เป็น
=IIf([txtrun] Mod 40=0,40,[txtRun] Mod 40)
อ้างที่ [txtrun] แทนการอ้างที่ [ID] ส่วนจะให้แสดงหรือไม่ก็กำหนดในส่วน Visible เอาว่าจะเป็น Yes หรือ No
ส่วนเรื่องอยากให้หน้าละ 20 เรคคอร์ดก็ปรับส่วนพื้นที่ Detail ของรายงานให้ความสูงได้ 20 เรคคอร์ดกับหน้ากระดาษที่กำหนดไว้ แล้วแก้โค้ดที่ Detail > Event > On Print:
Const Blank_Line = 20 'จากเดิม 40 เป็น 20 แทน ก็น่าจะใช้ได้แล้วครับ
ไฟล์ตัวอย่างแก้ไข
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator
 
โพสต์นี้ได้รับคำขอบคุณจาก: pitakchan, PNR, mtaccess

08 ส.ค. 62 , 15:08:45
ตอบกลับ #9

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #9 เมื่อ: 08 ส.ค. 62 , 15:08:45 »
น่าจะเพิ่มผิดตรงไหนสักจุดครับ Inbox มาครับ

ID กำหนด DATA TYPE เป็น text หรือเปล่าครับ
ปกติตรงนี้ผมกำหนดเป็น Number ครับ

ถ้าเป็น Text ใช้ Cint แปลงเป็น ตัวเลขก่อนคับ

ถ้าข้อมูล ID NO เป็น Text ลองใช้การแปลง Text เป็นตัวเลข ก่อน โดยผมสร้าง QryTable1 ขึ้นมาแสดงข้อมูลของ Table1 นะครับ

ตัวอย่างด้านล่าง

ID เป็น AutoNumber ค่ะ ตัวอย่างโปรแกรมตามไฟล์ที่แนบค่ะ ตอนนี้ติดปัญหาเพิ่มช่องในกรณีที่มีข้อมูลในหน้านั้นไม่ครบ 20 และติดตรงเวลาเลือก ชั่วโมงเป็น 8 ข้อมูลไม่เริ่มรัน 1 ใหม่ รบกวนแนะนำด้วยนะคะ ขอบคุณค่ะ

ขั้นตอนการทดสอบโปรแกรมมาที่หน้านี้ค่ะ
เลือกวันที่ 08/08/2019
เลือกชั่วโมงอบรมมี 40 และ 8


ในกรณีข้อมูลไม่ครบ 20 แถว ต้องการให้แสดงช่องให้ครบ 20 แถวค่ะ


ในกรณีเลือกชั่วโมงอบรมเป็น 8 ข้อมูลไม่เริ่มนับ 1 ค่ะ



 

08 ส.ค. 62 , 15:12:56
ตอบกลับ #10

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #10 เมื่อ: 08 ส.ค. 62 , 15:12:56 »
ถ้าเป็นในรายงานเราสามารถทำ Running Sum ได้เลย โดยการสร้าง Text Box เปล่าๆ ขึ้นมาใหม่ สมมุติชื่อ txtrun แล้วกำหนด Control Source: =1 กำหนดตรง Running Sum: Over All (หรือ Over Group หากสร้าง Group)
เราจะได้เลยที่เรียงลำดับขึ้นมา จากนั้นก็เปลี่ยนเงื่อนไขใน Text Box ที่เรานับเลข 1-40 ใหม่เป็น
=IIf([txtrun] Mod 40=0,40,[txtRun] Mod 40)
อ้างที่ [txtrun] แทนการอ้างที่ [ID] ส่วนจะให้แสดงหรือไม่ก็กำหนดในส่วน Visible เอาว่าจะเป็น Yes หรือ No
ส่วนเรื่องอยากให้หน้าละ 20 เรคคอร์ดก็ปรับส่วนพื้นที่ Detail ของรายงานให้ความสูงได้ 20 เรคคอร์ดกับหน้ากระดาษที่กำหนดไว้ แล้วแก้โค้ดที่ Detail > Event > On Print:
Const Blank_Line = 20 'จากเดิม 40 เป็น 20 แทน ก็น่าจะใช้ได้แล้วครับ
ไฟล์ตัวอย่างแก้ไข

ขอบคุณมากๆนะคะ เดี๋ยวจะลองทดสอบดูและนำผลมารายงานค่ะ

 

08 ส.ค. 62 , 15:29:30
ตอบกลับ #11

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #11 เมื่อ: 08 ส.ค. 62 , 15:29:30 »
ถ้าเป็นในรายงานเราสามารถทำ Running Sum ได้เลย โดยการสร้าง Text Box เปล่าๆ ขึ้นมาใหม่ สมมุติชื่อ txtrun แล้วกำหนด Control Source: =1 กำหนดตรง Running Sum: Over All (หรือ Over Group หากสร้าง Group)
เราจะได้เลยที่เรียงลำดับขึ้นมา จากนั้นก็เปลี่ยนเงื่อนไขใน Text Box ที่เรานับเลข 1-40 ใหม่เป็น
=IIf([txtrun] Mod 40=0,40,[txtRun] Mod 40)
อ้างที่ [txtrun] แทนการอ้างที่ [ID] ส่วนจะให้แสดงหรือไม่ก็กำหนดในส่วน Visible เอาว่าจะเป็น Yes หรือ No
ส่วนเรื่องอยากให้หน้าละ 20 เรคคอร์ดก็ปรับส่วนพื้นที่ Detail ของรายงานให้ความสูงได้ 20 เรคคอร์ดกับหน้ากระดาษที่กำหนดไว้ แล้วแก้โค้ดที่ Detail > Event > On Print:
Const Blank_Line = 20 'จากเดิม 40 เป็น 20 แทน ก็น่าจะใช้ได้แล้วครับ
ไฟล์ตัวอย่างแก้ไข


ลองทำตามคำแนะนำได้ข้อมูลตามนี้ค่ะ ข้อมูลเรียงแล้วค่ะ แสดงหน้าละ 20 แล้วค่ะ แต่ยังติดปัญหาตรงช่องว่างที่ต้องแสดงให้ครบ 20 แถวในกรณีที่ข้อมูลมีไม่ครบ
รบกวนแนะนำด้วยค่ะ
หน้าที่ 1
   หน้าที่ 2
   หน้าที่ 3
   หน้าที่ 4


 

08 ส.ค. 62 , 16:07:14
ตอบกลับ #12

PNR

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #12 เมื่อ: 08 ส.ค. 62 , 16:07:14 »
น่าจะแบบนี้ครับ
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Teeyai, mtaccess

08 ส.ค. 62 , 16:15:11
ตอบกลับ #13

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #13 เมื่อ: 08 ส.ค. 62 , 16:15:11 »
น่าจะแบบนี้ครับ

ขอบคุณมากๆนะคะ เดี๋ยวจะลองทำและรายงานผลค่ะ

 

08 ส.ค. 62 , 17:05:46
ตอบกลับ #14

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #14 เมื่อ: 08 ส.ค. 62 , 17:05:46 »
ทำได้แล้วค่ะ

ขอขอบคุณ คุณ TTT และ คุณ PNR มากๆด้วยนะคะ ที่ให้ความรู้และแนะนำวิธีการต่างๆ


แต่ติดปัญหาตรงการเรียงจากน้อยไปมากจาก Zone ทำ sort จากน้อยไปมากแล้ว แต่ข้อมูลไม่เรียงตาม Zone ค่ะ พร้อมกันนี้ได้แนบตัวอย่างโปรแกรมมาด้วยค่ะ
รบกวนแนะนำด้วยค่ะ

 

09 ส.ค. 62 , 10:13:08
ตอบกลับ #15

PNR

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #15 เมื่อ: 09 ส.ค. 62 , 10:13:08 »
Zone มีทั้ง ตัวเลข และ ตัวอักษร ลองใช้วิธีนี้ดูครับ
« แก้ไขครั้งสุดท้าย: 09 ส.ค. 62 , 10:16:21 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

09 ส.ค. 62 , 10:46:34
ตอบกลับ #16

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #16 เมื่อ: 09 ส.ค. 62 , 10:46:34 »
Zone มีทั้ง ตัวเลข และ ตัวอักษร ลองใช้วิธีนี้ดูครับ

ลองเอาไปใช้กับโปรแกรมจริงไม่เรียงเหมือนเดิมค่ะ ในหน้ารายงานเป็นแบบนี้



แต่ตอน Query คำสั่ง Select ดูเรียงตามโซน งงเลยค่ะ อิอิ
รบกวนแนะนำด้วยค่ะ
« แก้ไขครั้งสุดท้าย: 09 ส.ค. 62 , 11:03:44 โดย mtaccess »

 

09 ส.ค. 62 , 11:16:12
ตอบกลับ #17

mtaccess

: รันหมายเลขลำดับใน Report ใน Access
« ตอบกลับ #17 เมื่อ: 09 ส.ค. 62 , 11:16:12 »
Zone มีทั้ง ตัวเลข และ ตัวอักษร ลองใช้วิธีนี้ดูครับ


ทำได้แล้วค่ะ โดยการเพิ่มตรงนี้



ขอขอบพระคุณมากๆนะคะ สำหรับคำแนะนำและวิธีการต่างๆ สุดยอดมากเลยค่ะ

 


บอร์ดเรียนรู้ Access สำหรับคนไทย


 

Sitemap 1 2 3 4 5