กระทู้เก่าบอร์ด อ.Yeadram
1,752 8
URL.หัวข้อ /
URL
running เลขที่อัตโนมัติแบ่งเป็นช่วง
เช่น
โกดัง 01 ปี 52 รอบการผลิต 01 ต่อด้วย running 4 หลัก เริ่มรันเลขที่วันที่ 01/01/52
โกดัง 01 ปี 52 รอบการผลิต 02 ต่อด้วย running 4 หลัก เริ่มรันเลขที่วันที่ 14/03/52
โกดัง 01 ปี 52 รอบการผลิต 03 ต่อด้วย running 4 หลัก เริ่มรันเลขที่วันที่ 16/05/52 ซึ่งมันไม่มีรอบแน่นอนไม่เป็นเดือน หรืออาจข้ามปีก็ได้
แต่อยากรันเลขที่เป็นรอบการผลิตของแต่ละโกดัง
จะเขียนคำสั่งแบบไหนครับ
โกดัง 01 ปี 52 รอบการผลิต 01 ต่อด้วย running 4 หลัก เริ่มรันเลขที่วันที่ 01/01/52
โกดัง 01 ปี 52 รอบการผลิต 02 ต่อด้วย running 4 หลัก เริ่มรันเลขที่วันที่ 14/03/52
โกดัง 01 ปี 52 รอบการผลิต 03 ต่อด้วย running 4 หลัก เริ่มรันเลขที่วันที่ 16/05/52 ซึ่งมันไม่มีรอบแน่นอนไม่เป็นเดือน หรืออาจข้ามปีก็ได้
แต่อยากรันเลขที่เป็นรอบการผลิตของแต่ละโกดัง
จะเขียนคำสั่งแบบไหนครับ
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R03765
ก่อนจะให้ฟังก์ชั่นมันตรวจสอบเลขล่าสุดได้
ฟังก์ชั่นจะต้องรู้ค่าเหล่านี้ ณ เรคคอร์ดปัจจุบัน หรือ ณ เอกสารฉบับปัจจุบัน
1 รหัสโกดัง
2 วันที่ของเอกสาร หรือของเรคคอร์ดนี้
3 ช่วงเวลาของ แต่ละรอบการผลิต
การทำงาน
- สร้างสายอักขระเพื่อไปเป็นเงือนไข โดยสร้างจาก ข้อมูลต่างๆ ที่ได้จากข้อ 1,2,3
เช่น
- หารอบการผลิต
dim period ' เพราะไม่รู้ว่าคุณเก็บรอบการผลิตไว้ในรูปใด จึงต้องให้คุณหาเอง (เทียบเคียงวันที่ของเอกสารปัจจุบันกับวันที่ของรอบนั้นๆ)
period = ...
- ต่อไปหา รหัสโกดัง
dim dep
dep=format(รหัสโกดัง,"00")
- ต่อไปหาปี
dim yy
yy = format(วันที่ของเอกสาร, "yy")
-ต่อไป เอามาสร้างสายอักขระ
dim sq
sq = dep & yy & period
- ต่อไป นำสายอักขระที่ได้ไปเป็นเงื่อนไขในการหาเลขที่ล่าสุด
dim x
x = nz(dmax("right([เลขที่],4)","ตาราง","left([เลขที่],6) Like '" & sq & "'"),0)
x=x+1
เลขที่ใหม่ = sq & format(x,"0000")
ฟังก์ชั่นจะต้องรู้ค่าเหล่านี้ ณ เรคคอร์ดปัจจุบัน หรือ ณ เอกสารฉบับปัจจุบัน
1 รหัสโกดัง
2 วันที่ของเอกสาร หรือของเรคคอร์ดนี้
3 ช่วงเวลาของ แต่ละรอบการผลิต
การทำงาน
- สร้างสายอักขระเพื่อไปเป็นเงือนไข โดยสร้างจาก ข้อมูลต่างๆ ที่ได้จากข้อ 1,2,3
เช่น
- หารอบการผลิต
dim period ' เพราะไม่รู้ว่าคุณเก็บรอบการผลิตไว้ในรูปใด จึงต้องให้คุณหาเอง (เทียบเคียงวันที่ของเอกสารปัจจุบันกับวันที่ของรอบนั้นๆ)
period = ...
- ต่อไปหา รหัสโกดัง
dim dep
dep=format(รหัสโกดัง,"00")
- ต่อไปหาปี
dim yy
yy = format(วันที่ของเอกสาร, "yy")
-ต่อไป เอามาสร้างสายอักขระ
dim sq
sq = dep & yy & period
- ต่อไป นำสายอักขระที่ได้ไปเป็นเงื่อนไขในการหาเลขที่ล่าสุด
dim x
x = nz(dmax("right([เลขที่],4)","ตาราง","left([เลขที่],6) Like '" & sq & "'"),0)
x=x+1
เลขที่ใหม่ = sq & format(x,"0000")
3 @R03776
จะให้เทียบวันที่เอกสาร กับวันที่ของรอบนั้น ๆ อย่างไรครับ ผมเก็บไว้แต่วันที่เริ่มต้นรอบการผลิต
เช่น
วันเริ่มต้นการผลิต รอบการผลิต
01/01/52 01
14/03/52 02
จะทำให้มันรู้ได้อย่างไรครับ ว่า วันที่ 02/02/52 เป็นรอบ 01 หรือ วันที่ 15/03/52 เป็นรอบ 02 แล้ว หรือต้องใช้วิธีอื่น ช่วยแนะนำด้วยครับ ขอบคุณครับ
เช่น
วันเริ่มต้นการผลิต รอบการผลิต
01/01/52 01
14/03/52 02
จะทำให้มันรู้ได้อย่างไรครับ ว่า วันที่ 02/02/52 เป็นรอบ 01 หรือ วันที่ 15/03/52 เป็นรอบ 02 แล้ว หรือต้องใช้วิธีอื่น ช่วยแนะนำด้วยครับ ขอบคุณครับ
4 @R03783
xxx = วันที่ของเอกสาร(เรคคอร์ด)ปัจจุบัน
- หาวันที่ของการผลิตรอบต่อไป
period = dmax(รอบการผลิต,แหล่งข้อมูล,วันเริ่มต้นการผลิต > xxx)
- หารอบการผลิตปัจจุบัน
if period = 0 then
period = dmax(รอบการผลิต,แหล่งข้อมูล)
else
period = period -1
end if
- ตรวจสอบ การมีอยู่ ของข้อมูลอีกครั้ง พร้อมวิธีแก้ไข
if period < 1 then period =1
- หาวันที่ของการผลิตรอบต่อไป
period = dmax(รอบการผลิต,แหล่งข้อมูล,วันเริ่มต้นการผลิต > xxx)
- หารอบการผลิตปัจจุบัน
if period = 0 then
period = dmax(รอบการผลิต,แหล่งข้อมูล)
else
period = period -1
end if
- ตรวจสอบ การมีอยู่ ของข้อมูลอีกครั้ง พร้อมวิธีแก้ไข
if period < 1 then period =1
5 @R03790
หาวันที่ของการผลิตรอบต่อไป
period = dmax(รอบการผลิต,แหล่งข้อมูล,วันเริ่มต้นการผลิต > xxx)
ยังงงประโยคนี้ครับ ผมทำแล้วมันออก รอบสูงสุดตลอดเลย
เช่น ตอนนี้รอบสูงสุด รอบ 03 เริ่มต้น 16/05/52 พอคีย์วันที่ของรอบ 01 เข้าไป
ผลที่ได้ มันก็ออกรอบ 02 ไม่เห็นออกรอบ 01 เลยครับ คือมันมองเห็นรอบสูงสุด
ตลอดเลยไม่ว่าจะคีย์เอกสารรอบไหน
ช่วยดูอีกรอบครับ ขอบคุณครับ
period = dmax(รอบการผลิต,แหล่งข้อมูล,วันเริ่มต้นการผลิต > xxx)
ยังงงประโยคนี้ครับ ผมทำแล้วมันออก รอบสูงสุดตลอดเลย
เช่น ตอนนี้รอบสูงสุด รอบ 03 เริ่มต้น 16/05/52 พอคีย์วันที่ของรอบ 01 เข้าไป
ผลที่ได้ มันก็ออกรอบ 02 ไม่เห็นออกรอบ 01 เลยครับ คือมันมองเห็นรอบสูงสุด
ตลอดเลยไม่ว่าจะคีย์เอกสารรอบไหน
ช่วยดูอีกรอบครับ ขอบคุณครับ
6 @R03792
ผมคิดผิดครับ ขออภัย
เขาเรียกอะไรนะ อัลกอริธึมฺ หรือ ตรรกะ ครับ
บรรทัดนั้นต้องใช้ Dmin ครับไม่ใช่ Dmax
ปล. ก่อนหน้านี้ไม่ใช่เขียนผิดนะ เป็นการคิดผิดจริงๆ ยอมรับผิดคร้าบบ
อ้อ อีกอย่าง ระวังการใช้รูปแบบของวันที่ นะครับ เมื่อใช้เงื่อนไขกับข้อมูลประเภท date/Time ยิ่งเราคนไทยยิ่งต้องระวังเรื่องรูปแบบมากๆ เพราะชีวิตประจำวันของไทยเรามีรูปแบบวันที่ ที่แตกต่างจากสากล
ลองดูใหม่นะครับ ถ้ายังไม่ได้ จะขอดูตัวอย่างโค้ดที่นำไปประยุกต์ จะได้ไหมครับ ถ้าได้แล้วก็ไม่เป็นไรนะครับ
เขาเรียกอะไรนะ อัลกอริธึมฺ หรือ ตรรกะ ครับ
บรรทัดนั้นต้องใช้ Dmin ครับไม่ใช่ Dmax
ปล. ก่อนหน้านี้ไม่ใช่เขียนผิดนะ เป็นการคิดผิดจริงๆ ยอมรับผิดคร้าบบ
อ้อ อีกอย่าง ระวังการใช้รูปแบบของวันที่ นะครับ เมื่อใช้เงื่อนไขกับข้อมูลประเภท date/Time ยิ่งเราคนไทยยิ่งต้องระวังเรื่องรูปแบบมากๆ เพราะชีวิตประจำวันของไทยเรามีรูปแบบวันที่ ที่แตกต่างจากสากล
ลองดูใหม่นะครับ ถ้ายังไม่ได้ จะขอดูตัวอย่างโค้ดที่นำไปประยุกต์ จะได้ไหมครับ ถ้าได้แล้วก็ไม่เป็นไรนะครับ
7 @R03795
ได้แล้วครับ ขอบคุณมากครับ
8 @R03798
ผมลองใช้
period=dmax(รอบการผลิต,แหล่งข้อมูล,วันเริ่มต้นการผลิต<=xxx) มันจะได้ตรง period เลย ไม่ต้องลบ -1 เผื่อค่ารอบการผลิตเป็น Text ขอบคุณผู้แนะนำ yeadram อีกครั้งครับ
period=dmax(รอบการผลิต,แหล่งข้อมูล,วันเริ่มต้นการผลิต<=xxx) มันจะได้ตรง period เลย ไม่ต้องลบ -1 เผื่อค่ารอบการผลิตเป็น Text ขอบคุณผู้แนะนำ yeadram อีกครั้งครับ
Time: 0.3283s
สรุป ตั้งแต่วันที่ 01/01/52 - 13/03/52 ให้มันรันอัตโนมัติ 015201XXXX
วันที่ 14/03/52 - 15/05/52 ให้รันอัตโนมัติ 015202XXXX
วันที่ 16/05/52 - ปัจจุบัน ให้รันอัตโนมัติ 015203XXXX
ดูวันที่เริ่มต้นที่จะเริ่มรอบการผลิตใหม่ พอถึงวันที่เริ่มรอบนั้น ก็เป?ี่ยนการรันทันที
ซึ่งก็มีหลายโกดัง แต่ละโกดังก็มีรอบการผลิตไม่เท่ากัน จะทำอย่างไรดีครับ