ต้องการวิธีสร้าง Lot Number
กระทู้เก่าบอร์ด อ.Yeadram

 9,367   9
URL.หัวข้อ / URL
ต้องการวิธีสร้าง Lot Number



จากรูป ผมได้รับโจทย์มาดังนี้
1. ใน Filed ที่ชื่อ DateOrder ต้องการเก็บข้อมูลของวันที่ที่ทำการสั่งผลิต โดยมีข้อแม้ว่า "ต้องเป็นวันที่ปัจจุบันที่ทำการสั่งผลิตเท่านั้น" โดยให้ระบบทำงานเอง ผู้ใช้ (เจ้านายผมเอง อิอิอิ) ไม่ต้องคีย์
เช่น สั่งผลิตวันที่ 21/11/2556 ก็ให้ขึ้นข้อมูลว่า "21/11/2556" และเมื่อเปิดดูในวันอื่น ๆ ก็ยังคงเป็นวันที่ "21/11/2556" อยู่เช่นเดิม
สิ่งที่ผมลองทำ คือ กำหนดนิพจน์เป็น =Date()
แต่ปัญหาที่พบ คือ เมื่อกลับมาดูข้อมูล กลายเป็นว่าทุกข้อมูลกลายเป็นวันที่ปัจจุบันทั้งหมด
คำถามคือ มีแนวทางแก้ไขอย่างไรได้บ้างครับ

2. ใน Filed ที่ชื่อ LotNumber ต้องการเก็บข้อมูลเลขที่ในสั่งผลิต (Lot No.) โดยมีรูปแบบของเลขที่ คือ วันที่/เดือน/ปี/ลำดับที่สั่งผลิตของวัน/หมายเลขเครื่องจักร
เช่น วันที่ 21/11/56 สั่งผลิตที่เครื่อง M/C1 เป็นครั้งแรกของวัน Lot number ต้องขึ้น "2111560101"
สิ่งที่ได้ลองทำ คือ กำหนดนิพจ์เป็น =Left(Date(),2)&Month(Date())&Right(Date(),2)
ผลที่ได้ คือ 211156 แต่ถ้าเป็นตัวเลขที่มีค่าน้อยกว่า 10 จะขึ้นเป็น 1156 (ที่ต้องการคือ 010156) แบบนี้เป็นต้น
ในส่วนของเลขลำดับกับเลขเครื่อง ยังหาวิธีไม่ได้
มีท่านผู้รู้ท่านใดพอจะสร้าง Lot number ในแบบที่ผมต้องการได้บ้างครับ
ขอคำแนนะนำด้วยครับ ขอบพระคุณล่วงหน้าครับ

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

1 @R17551
1. กำหนด Default Value ให้ฟิลด์นั้น =Date() ครับ ถ้าป้อนข้อมูลเมื่อไหร่ วันที่วันนั้นก็จะเก็บเข้าตารางให้เอง
2. สร้างคิวรีให้ดูแล้วนะครับ

จากรูป ด้านซ้ายเป็นตัวอย่างตาราง (สำหรับข้อ1)
ด้านขวาเป็นคิวรี ที่แสดงตัวอย่างการเปลี่ยนวันที่เป็น รูปแบบตัวเลขอย่างที่คุณต้องการ (สำหรับข้อ2) เอาไปประยุกต์เอาเองนะครับ
2 @R17552
ขอบคุณมากครับ แต่มีข้อสงสัยคือว่า
ถ้าวันที่กำหนดเป็น =Date() แล้ว สมมติวันอื่นเราเรียกข้อมูลมาดูอีกครั้ง วันที่จะเปลี่ยนเป็นปัจจุบันหรือไม่

แล้วพอจะมีวิธีไหนบ้างที่ผมจะสามารถนำคือที่อยู่ใน Filed [Machine] มาต่อท้ายตัวเลขชุดวันที่ได้
เช่น วันที่ 21/11/56 สั่งผลิตที่เครื่อง M/C1 เป็นครั้งแรก ต้องการได้ชุดตัวเลข คือ
"2111560101"
3 @R17553
กำหนดแบบตัวอย่างจะไม่เปลี่ยนครับ เพราะเป็นการตั้งค่าว่าถ้าใส่เรคอร์ดนั้นเมื่อไหร่ให้เอาวันที่ปัจจุบันเก็บลงตารางทันที เก็บแล้วเก็บเลย ถ้าเราไม่เปลี่ยนเอง Access ก็ไม่เปลี่ยนครับ

สำหรับอีกคำถามให้เชื่อมด้วย & ครับ

เช่น

=Format([Data],"ddmmyyyy")&[MC] ประมาณนี้ครับ
4 @R17555
งั้นเด๋วขอทดลองสร้างดูนะครับ ได้ผลอย่างไร จะเอามาแจ้งให้ทราบครับ
ขอขอบพระคุณอีกครั้งครับ
5 @R17556


นี่คือผลที่ได้ตามที่อาจารย์สอนครับ (ขออนุญาตเรียกอาจารย์นะครับ)

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

ยกตัวอย่าง 2111560101 หมายถึง ในวันที่ 21/11/26 มีการผลิตที่เครื่อง M/C 1 เป็นอันดับที่ 1

2111560202 หมายถึง ในวันที่ 21/11/56 มีการผลิตที่เครื่อง M/C 2 เป็นอันดับที่ 2

ประมาณนี้ครับ
รบกวนอาจารย์ชี้แนะด้วยครับ ว่าต้องทำอย่างไรถึงจะได้ชุดตัวเลขตามที่ต้องการครับ

ขอบพระคุณครับ
6 @R17557
ก็คุณสั่ง Right แล้วหยิบตัวเดียว มันออกมาแบบนี้สิครับ

ผมไม่รู้หรอกนะว่า 0101 กับ 0202 มันมาจากไหน แต่ไม่ได้มาจาก M/C1 หรือ M/C2 ตรงๆ แน่นอน

คุณต้องหาตัวเชื่อมให้ได้ว่า 0101 0202 อะไรนี่มาจากไหน แล้วค่อยเอามาเชื่อมกับ & ครับ
7 @R17558
211156 คือ วันที่ เดือน ปี
01 คือ ครั้งที่สั่งผลิตภายในวันนั้น
01 คือ เลขเครื่องครับ

ซึ่งตอนแรกผมลองใช้ Right([Machine],2) ปรากฏว่า มันออกมา "C1" ครับ

งั้นผมขอถามสักข้อครับ
เราสามารถเขียนฟังค์ชั่น IF แบบ Ecxel ไปในคิวรี่ได้ไหมครับ ถ้าได้มีวิธีใช้งานยังไงครับ
8 @R17560
ในคิวรีใช้ IIF ครับ
IIf( เงื่อนไข, จริงได้อันนี้, เท็จได้อันนี้)

แต่ถ้า VBA จะเหมือน Excel ครับ
9 @R17561
ขอบคุณมากครับ งั้นเดี๋ยวผมจะลองใช้ IF มาผนวกกับคำสั่งอื่น ๆ เพื่อให้ได้ชุดตัวเลขตามที่ผมต้องการครับ ได้คำตอบอย่างไร จะเอามาให้ดูในคืนพรุ่งนี้ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2581s