กระทู้เก่าบอร์ด อ.Yeadram
3,224 14
URL.หัวข้อ /
URL
สอบถามเรื่องการวางแผนการผลิต
อาจารย์ครับ คือผมมีฟิลด์ที่ใช้เก็บคำสั่งซื้อของลูกค้าประกอบด้วย
วันที่สั่งสินค้า(DateJob),วันที่ส่ง(DateSend),ชื่อลูกค้า(IDCusมาจากอีกฟิลด์หนึ่ง),
ชื่อสินค้า(IDToyมาจากอีกฟิลด์หนึ่ง) ,จำนวนที่สั่ง(Qty)
แล้วเมื่อมีคำสั่งซื้อของลูกค้าเข้ามา เช่น
สั่งวันที่ 1/11/2555 ส่งวันที่ 14/11/2555 ชื่อ John สั่งตุ๊กตา จำนวน 2000 ชิ้น
โดยตุ๊กตามีกำลังการผลิต 200 ต่อวัน แล้วใช้มันวางแผนแบบนี้ครับ
1/11/2555 200
2/11/2555 200
3/11/2555 200
4/11/2555 200
5/11/2555 200
6/11/2555 200
7/11/2555 200
8/11/2555 200
9/11/2555 200
10/11/2555 200
ประมาณนี้อ่ะครับ แล้วคือถ้าสมมุติมี Order เข้ามาอีกในวันที่ 2/11/2555
โดยสมมติว่าสั่งรถบังคับ 500 ชิ้นแล้ววิธีวางแผนก็คือต้องให้Order เสร็จก่อนอ่ะครับ
โดยที่กำลังการผลิตเป็น 200 ต่อวันแล้วจะได้แบบนี้ครับ
11/11/2555 200
12/11/2555 200
13/11/2555 100
แล้วถ้าเกิดมีออร์เดอร์เข้ามาก็จะทำแบบนี้ไปเรื่อยโดยต้องให้สินค้าก่อนหน้า
ผลิตเสร็จก่อนอ่ะครับ รบกวนอาจารย์ด้วยนะครับ
วันที่สั่งสินค้า(DateJob),วันที่ส่ง(DateSend),ชื่อลูกค้า(IDCusมาจากอีกฟิลด์หนึ่ง),
ชื่อสินค้า(IDToyมาจากอีกฟิลด์หนึ่ง) ,จำนวนที่สั่ง(Qty)
แล้วเมื่อมีคำสั่งซื้อของลูกค้าเข้ามา เช่น
สั่งวันที่ 1/11/2555 ส่งวันที่ 14/11/2555 ชื่อ John สั่งตุ๊กตา จำนวน 2000 ชิ้น
โดยตุ๊กตามีกำลังการผลิต 200 ต่อวัน แล้วใช้มันวางแผนแบบนี้ครับ
1/11/2555 200
2/11/2555 200
3/11/2555 200
4/11/2555 200
5/11/2555 200
6/11/2555 200
7/11/2555 200
8/11/2555 200
9/11/2555 200
10/11/2555 200
ประมาณนี้อ่ะครับ แล้วคือถ้าสมมุติมี Order เข้ามาอีกในวันที่ 2/11/2555
โดยสมมติว่าสั่งรถบังคับ 500 ชิ้นแล้ววิธีวางแผนก็คือต้องให้Order เสร็จก่อนอ่ะครับ
โดยที่กำลังการผลิตเป็น 200 ต่อวันแล้วจะได้แบบนี้ครับ
11/11/2555 200
12/11/2555 200
13/11/2555 100
แล้วถ้าเกิดมีออร์เดอร์เข้ามาก็จะทำแบบนี้ไปเรื่อยโดยต้องให้สินค้าก่อนหน้า
ผลิตเสร็จก่อนอ่ะครับ รบกวนอาจารย์ด้วยนะครับ
14 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R12820
ขอบคุณอาจารย์นะครับเดี๋ยวผมลองทำตามดู
3 @R12821
อาจารย์ครับ คือถ้าสินค้ามันมีมากกว่าหนึ่งชนิด
โดยผมเก็บรหัสสินค้าไว้อีกเทเบิ้ลนึง เช่น A001 ตุ๊กตา
A002 รถบังคับ
A003 หุ่นยนต์
แล้วสินค้าพวกนี้ก็จะมีการสั่งผลิตสลับกันไปหรืออาจจะเหมือนกันก็ได้ในแต่ละเดือน
แล้วแต่ลูกค้าสั่งอ่ะครับ
โดยผมเก็บรหัสสินค้าไว้อีกเทเบิ้ลนึง เช่น A001 ตุ๊กตา
A002 รถบังคับ
A003 หุ่นยนต์
แล้วสินค้าพวกนี้ก็จะมีการสั่งผลิตสลับกันไปหรืออาจจะเหมือนกันก็ได้ในแต่ละเดือน
แล้วแต่ลูกค้าสั่งอ่ะครับ
4 @R12822
อ๋อ เข้าใจแล้วครับอาจารย์ที่อาจารย์ให้หาวันที่สุดท้ายของการสั่งผลิต
เพื่อจะนำมาคำนวณพอเข้าใจแล้วครับ แต่คงต้องรอโค้ดในการวนลูป
ขอบคุณครับอาจารย์
เพื่อจะนำมาคำนวณพอเข้าใจแล้วครับ แต่คงต้องรอโค้ดในการวนลูป
ขอบคุณครับอาจารย์
5 @R12824
คือโจทย์ของผมก็คือเมื่อมีคำสั่งซื้อของลูกค้าเข้ามาบริษัทก็จะผลิตสินค้าทันที
โดยวิธีการวางแผนก็คือเมื่อรับคำสั่งซื้อมา 1000 ชิ้น โดยจะต้องดูกำลังผลิต
ในแต่ล่ะวันซึ่งจะถูกกำหนดตามชนิดของสินค้าอยู่แล้ว เช่น 200 ชิ้นต่อวัน (โดยไม่
คำนึงถึง Line อื่นๆ) ก็จะทำการผลิต 5 วันคือเริ่มจากวันที่สั่งสินค้า เช่นสั่งวันที่
1/01/2555 จะผลิตเสร็จทั้งหมดวันที่ 5/01/2555 แล้วถ้ามีออร์เดอร์อื่นสั่งเข้ามา
เช่นสั่งเข้ามาในวันที่ 2/01/2555 แต่ว่าในวันที่ 2 ยังทำการผลิตออร์เดอร์แรกอยู่
ต้องรอให้ผลิตเสร็จก่อนดังนั้นจึงมาเริ่มในวันที่ 6/01/2555 วิธีการของอาจารย์
ก็คือ เมื่อรับออร์เดอร์แรกเข้ามาก็จะคำนวณ ปล้วหลังจากนั้นก็จะมาดูที่ออร์เดอร์
สุดท้ายแล้วก็คำนวณ ผมเข้าใจถูกหรือเปล่าครับอาจารย์
โดยวิธีการวางแผนก็คือเมื่อรับคำสั่งซื้อมา 1000 ชิ้น โดยจะต้องดูกำลังผลิต
ในแต่ล่ะวันซึ่งจะถูกกำหนดตามชนิดของสินค้าอยู่แล้ว เช่น 200 ชิ้นต่อวัน (โดยไม่
คำนึงถึง Line อื่นๆ) ก็จะทำการผลิต 5 วันคือเริ่มจากวันที่สั่งสินค้า เช่นสั่งวันที่
1/01/2555 จะผลิตเสร็จทั้งหมดวันที่ 5/01/2555 แล้วถ้ามีออร์เดอร์อื่นสั่งเข้ามา
เช่นสั่งเข้ามาในวันที่ 2/01/2555 แต่ว่าในวันที่ 2 ยังทำการผลิตออร์เดอร์แรกอยู่
ต้องรอให้ผลิตเสร็จก่อนดังนั้นจึงมาเริ่มในวันที่ 6/01/2555 วิธีการของอาจารย์
ก็คือ เมื่อรับออร์เดอร์แรกเข้ามาก็จะคำนวณ ปล้วหลังจากนั้นก็จะมาดูที่ออร์เดอร์
สุดท้ายแล้วก็คำนวณ ผมเข้าใจถูกหรือเปล่าครับอาจารย์
6 @R12825
คิดว่าคุณน่าจะเข้าใจถูกทางแล้ว
แก้ไข/ปรับปรุง ให้ใกล้ code มากขึ้น (แต่ไม่ได้ code จริงอาจมีผิดพลาดบ้าง กรุณาแก้ไขตามเหมาะสม)
1) หาวันที่สุดท้ายของคำสั่งผลิต
datLastPro = Selec max([วันที่สั่งผลิต])
From [ตารางผลิต]
Where [IDToy] = 'รถบังคับ'"
2) หาวันที่เริ่มผลิต (อันนี้ขึ้นกับความซับซ้อนที่ต้องการ โดยผมตั้งสมมุติฐานว่า ถ้าลูกค้าสั่งของมาวันนี้ สั่งผลิตวันนี้ไม่ทันแน่ ต้องเริ่มผลิตพรุ่งนี้)
If datLastPro <= Date Then
datPro = DateAdd(“d”,Date,1)
lngLeftOrderQty = [จำนวนที่สั่งซื้อ]
Else
datPro = DateAdd(“d”,datLastPro,1)
lngLeftOrderQty = [จำนวนที่สั่งซื้อ] - lngAddLastProQty
End If
3) กรณี ให้สั่งผลิตเพิ่ม เนื่องจากคำสั่งผลิตสุดท้ายไม่เต็มกำลัง
3.1) หาจำนวนที่สั่งผลิตของวันสุดท้ายนั้น
lngLastProQty = Select [จำนวนที่สั่งผลิต]
From [ตารางผลิต]
Where [IDToy] = 'รถบังคับ'"
And [วันที่สั่งผลิต] = datLastPro
3.2) หาจำนวนที่ ให้สั่งผลิตเพิ่ม เนื่องจากคำสั่งผลิตสุดท้ายไม่เต็มกำลัง
lngAddLastProQty = [กำลังผลิต] - lngLastProQty
if lngAddLastProQty > [จำนวนที่สั่งซื้อ] Then
(กรณ๊นี้ตามข้อมูลที่แจ้ง ไม่น่าจะเกิดได้ แต่เขียนเผื่อไว้ก่อน)
strSQL = “Update [ตารางผลิต] Set [จำนวนที่สั่งผลิต] = ” & [จำนวนที่สั่งซื้อ] _
& “ Where IDToy = ‘รถบังคับ’”
DoCmd.RunSQL strSQL
Exit Sub ‘หยุดคำนวณต่อ เพราะเสร็จสิ้นการสั่งผลิตเพียงเท่านี้
Else
strSQL = “Update [ตารางผลิต] Set [จำนวนที่สั่งผลิต] = ” & lngAddLastProQty _
& “ Where IDToy = ‘รถบังคับ’”
DoCmd.RunSQL strSQL
End If
4) วน Loop ตามวันที่ต้องสั่งผลิตเต็มกำลัง
Do While lngLeftOrderQty > 0
…
Loop
แก้ไข/ปรับปรุง ให้ใกล้ code มากขึ้น (แต่ไม่ได้ code จริงอาจมีผิดพลาดบ้าง กรุณาแก้ไขตามเหมาะสม)
1) หาวันที่สุดท้ายของคำสั่งผลิต
datLastPro = Selec max([วันที่สั่งผลิต])
From [ตารางผลิต]
Where [IDToy] = 'รถบังคับ'"
2) หาวันที่เริ่มผลิต (อันนี้ขึ้นกับความซับซ้อนที่ต้องการ โดยผมตั้งสมมุติฐานว่า ถ้าลูกค้าสั่งของมาวันนี้ สั่งผลิตวันนี้ไม่ทันแน่ ต้องเริ่มผลิตพรุ่งนี้)
If datLastPro <= Date Then
datPro = DateAdd(“d”,Date,1)
lngLeftOrderQty = [จำนวนที่สั่งซื้อ]
Else
datPro = DateAdd(“d”,datLastPro,1)
lngLeftOrderQty = [จำนวนที่สั่งซื้อ] - lngAddLastProQty
End If
3) กรณี ให้สั่งผลิตเพิ่ม เนื่องจากคำสั่งผลิตสุดท้ายไม่เต็มกำลัง
3.1) หาจำนวนที่สั่งผลิตของวันสุดท้ายนั้น
lngLastProQty = Select [จำนวนที่สั่งผลิต]
From [ตารางผลิต]
Where [IDToy] = 'รถบังคับ'"
And [วันที่สั่งผลิต] = datLastPro
3.2) หาจำนวนที่ ให้สั่งผลิตเพิ่ม เนื่องจากคำสั่งผลิตสุดท้ายไม่เต็มกำลัง
lngAddLastProQty = [กำลังผลิต] - lngLastProQty
if lngAddLastProQty > [จำนวนที่สั่งซื้อ] Then
(กรณ๊นี้ตามข้อมูลที่แจ้ง ไม่น่าจะเกิดได้ แต่เขียนเผื่อไว้ก่อน)
strSQL = “Update [ตารางผลิต] Set [จำนวนที่สั่งผลิต] = ” & [จำนวนที่สั่งซื้อ] _
& “ Where IDToy = ‘รถบังคับ’”
DoCmd.RunSQL strSQL
Exit Sub ‘หยุดคำนวณต่อ เพราะเสร็จสิ้นการสั่งผลิตเพียงเท่านี้
Else
strSQL = “Update [ตารางผลิต] Set [จำนวนที่สั่งผลิต] = ” & lngAddLastProQty _
& “ Where IDToy = ‘รถบังคับ’”
DoCmd.RunSQL strSQL
End If
4) วน Loop ตามวันที่ต้องสั่งผลิตเต็มกำลัง
Do While lngLeftOrderQty > 0
…
Loop
7 @R12826
2) หาวันที่เริ่มผลิต (อันนี้ขึ้นกับความซับซ้อนที่ต้องการ โดยผมตั้งสมมุติฐานว่า ถ้าลูกค้าสั่งของมาวันนี้ สั่งผลิตวันนี้ไม่ทันแน่ ต้องเริ่มผลิตพรุ่งนี้)
If datLastPro <= Date Then
datPro = DateAdd(“d”,Date,1)
lngLeftOrderQty = [จำนวนที่สั่งซื้อ]
Else
***(เอา Code ข้อ 3) มาวางตรงนี้ครับ)
datPro = DateAdd(“d”,datLastPro,1)
lngLeftOrderQty = [จำนวนที่สั่งซื้อ] - lngAddLastProQty
End If
If datLastPro <= Date Then
datPro = DateAdd(“d”,Date,1)
lngLeftOrderQty = [จำนวนที่สั่งซื้อ]
Else
***(เอา Code ข้อ 3) มาวางตรงนี้ครับ)
datPro = DateAdd(“d”,datLastPro,1)
lngLeftOrderQty = [จำนวนที่สั่งซื้อ] - lngAddLastProQty
End If
8 @R12827
อาจารย์ครับ แล้วโค้ด ที่ให้มาใช้ในคำสั่ง Vb ในปุ่มใช่รึปล่าวครับ คือผมไม่ค่อย
ถนัด Vb ผมจะต้องเขียนอ้างถึงอะไรบ้างหรอครับ
ถนัด Vb ผมจะต้องเขียนอ้างถึงอะไรบ้างหรอครับ
9 @R12828
อาจารย์ครับ แล้วเราจะเขียนไว้ที่ไหนครับ ซึ่งผมมีคิวรีที่จะรับผลการคำนวณอยู่ครับ
ชื่อว่า qryPlanning ประกอบด้วย DateOrder(วันที่รับคำสั่งซื้อ),รหัสของเล่น,
จำนวนที่สั่งซื้อ,กำลังการผลิต,จำนวนที่สั่งผลิต
ผมจะต้องเอาโค้ดที่อาจารย์ให้มาใส่ตรงไหนครับรบกวนอาจารย์ด้วยนะครับ
ชื่อว่า qryPlanning ประกอบด้วย DateOrder(วันที่รับคำสั่งซื้อ),รหัสของเล่น,
จำนวนที่สั่งซื้อ,กำลังการผลิต,จำนวนที่สั่งผลิต
ผมจะต้องเอาโค้ดที่อาจารย์ให้มาใส่ตรงไหนครับรบกวนอาจารย์ด้วยนะครับ
10 @R12829
อาจารย์ครับผมเขียนโค้ดนี้ลงในปุ่ม ในฟอร์มรับคำสั่งซื้อสินค้า
คือแล้วมันบอกว่าไม่พบเขตข้อมูล '|' ที่ถูกอ้างถึงในนิพจน์
แล้วมันก็ไม่คำนวณค่าด้วยครับไม่ทราบว่าผมใส่อะไรผิด หรือว่าผมเขียนโค้ดผิดครับ
datLastPro = "Select max([DateOrder]) From [OrderHistory] Where [Code] = [Code]"
If datLastPro <= Date Then
datPro = DateAdd(“d”, Date, 1)
lngLeftOrderQty = [Qty]
Else
lngLastProQty = "Select [Limit] From [OrderHistory] Where [Code] = Code And [DateOrder] = datLastPro"
lngAddLastProQty = [Limit] - lngLastProQty
If lngAddLastProQty > [Qty] Then
strSQL = "Update [OrderHistory] Set [Limit] = " & [Limit] _
& " Where [Code] = [Code]"
DoCmd.RunSQL strSQL
Exit Sub 'ËÂØ´¤Ó¹Ç³µèÍ à¾ÃÒÐàÊÃç¨ÊÔ鹡ÒÃÊÑè¼ÅÔµà¾ÕÂà·èÒ¹Õé
Else
strSQL = "Update [OrderHistory] Set [Limit] = " & lngAddLastProQty _
& " Where [Code] = [Code]"
DoCmd.RunSQL strSQL
End If
datPro = DateAdd(“d”, datLastPro, 1)
lngLeftOrderQty = [Limit] - lngAddLastProQty
End If
Do While lngLeftOrderQty > 0
Loop
คือแล้วมันบอกว่าไม่พบเขตข้อมูล '|' ที่ถูกอ้างถึงในนิพจน์
แล้วมันก็ไม่คำนวณค่าด้วยครับไม่ทราบว่าผมใส่อะไรผิด หรือว่าผมเขียนโค้ดผิดครับ
11 @R12832
กรณีต้องวน loop อย่างนี้ ผมเขียนเป็น vba ถนัดกว่าครับ
เพราะฉะนั้น ถ้าจะเขียนเป็น vba ก็วางใน event ของ ปุ่ม ถูกแล้วครับ
สิ่้งที่ผมเขียนให้ยังไม่เป็น code 100% เพราะที่จริงมีวิธีเขียนหลายแบบ ผมจึงเขียนเป็นเชิง concept ไว้ก่อน แล้วแต่ว่าคุณถนัดใช้ code แบบไหน ก็ไปแปลงตามถนัด
และผมก็ไม่รู้ว่าคุณจงใจสั่งคำนวณผ่าน query หรือ Form แล้ว From ของคุณหน้าตาเป็นอย่างไร มีการรับค่าอะไรบ้าง
เช่น
datLastPro = "Select max([DateOrder]) From [OrderHistory] Where [Code] = [Code]"
คุณไม่สามารถเขียน code แบบนี้ให้ทำงานได้หรอกครับ
วิธีเขียน code จริง ยกตัวอย่างให้ 2 วิธี
1) ใช้ function ตระกูล DLookUp()
ซึ่งกรณีนี้ หา Max ให้ใช้ DMax()
datLastPro = DMax("DateOrder", "OrderHistory", "Code = '" & txtCode & "'"
2) ใช้ RecordSet
Set rs = CurrentDB.OpenRecordSet ("Select max(DateOrder) as MaxOrderDate From OrderHistory Where Code = '" & txtCode & "'"
datLastPro = rs!MaxOrderDate
ได้ผลเหมือนกัน แต่เข้าใจว่าวิธี 2) คำนวณเร็วกว่า
คือจริงๆ แนะนำว่าต้องศึกษาพื้นฐานมากกว่านี้ก่อนนะครับ
เพราะฉะนั้น ถ้าจะเขียนเป็น vba ก็วางใน event ของ ปุ่ม ถูกแล้วครับ
สิ่้งที่ผมเขียนให้ยังไม่เป็น code 100% เพราะที่จริงมีวิธีเขียนหลายแบบ ผมจึงเขียนเป็นเชิง concept ไว้ก่อน แล้วแต่ว่าคุณถนัดใช้ code แบบไหน ก็ไปแปลงตามถนัด
และผมก็ไม่รู้ว่าคุณจงใจสั่งคำนวณผ่าน query หรือ Form แล้ว From ของคุณหน้าตาเป็นอย่างไร มีการรับค่าอะไรบ้าง
เช่น
datLastPro = "Select max([DateOrder]) From [OrderHistory] Where [Code] = [Code]"
คุณไม่สามารถเขียน code แบบนี้ให้ทำงานได้หรอกครับ
วิธีเขียน code จริง ยกตัวอย่างให้ 2 วิธี
1) ใช้ function ตระกูล DLookUp()
ซึ่งกรณีนี้ หา Max ให้ใช้ DMax()
datLastPro = DMax("DateOrder", "OrderHistory", "Code = '" & txtCode & "'"
2) ใช้ RecordSet
Set rs = CurrentDB.OpenRecordSet ("Select max(DateOrder) as MaxOrderDate From OrderHistory Where Code = '" & txtCode & "'"
datLastPro = rs!MaxOrderDate
ได้ผลเหมือนกัน แต่เข้าใจว่าวิธี 2) คำนวณเร็วกว่า
คือจริงๆ แนะนำว่าต้องศึกษาพื้นฐานมากกว่านี้ก่อนนะครับ
12 @R12834
คือผมมีคิวรีไว้รอการคำนวณแล้วครับ ประกอบด้วยฟิลด์
DateWork(วันที่ทำการผลิต),Code(รหัสสินค้า),Qty(จำนวนที่สั่งสินค้า),ReQty(จำนวนที่ผลิต)
ผมจะต้องเขียนโค้ดยังไงให้มันคำนวณลงในคิวรี่ที่ต้องการครับอาจารย์
DateWork(วันที่ทำการผลิต),Code(รหัสสินค้า),Qty(จำนวนที่สั่งสินค้า),ReQty(จำนวนที่ผลิต)
ผมจะต้องเขียนโค้ดยังไงให้มันคำนวณลงในคิวรี่ที่ต้องการครับอาจารย์
13 @R12835
อาจารย์ครับรบกวนอาจารย์เขียนโค้ดข้อสามให้หน่อยได้รึปล่าวครับ
14 @R12836
อาจารย์ครับผมลองแก้ไขโค้ดซึ่งไม่แน่ใจว่าถูกหรือปล่าว แต่ว่ามันมีที่ Error
อยู่ คือตรง datPro = DateAdd("d", datLastPro, 1) มันบอกว่า Is Null
ผมเขียนผิดตรงไหนบ้างครับ และต้องแก้ไขอย่างไร
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb()
Set rs = CurrentDb.OpenRecordset("OrderHistory", dbOpenDynaset)
Set rs = CurrentDb.OpenRecordset("Select max(DateOrder) as MaxOrderDate From OrderHistory Where Code = '" & txtCode & "'")
datLastPro = rs!MaxOrderDate
If datLastPro <= Date Then
datPro = DateAdd("d", Date, 1)
lngLeftOrderQty = [Qty]
Else
lngLastProQty = DLookup("Limit", "OrderHistory", "Code = '" & txtCode & "'")
lngAddLastProQty = (Limit) - lngLastProQty
If lngAddLastProQty > [Qty] Then
strSQL = "Update [OrderHistory] Set [Limit] = " & [Limit] _
& " Where [Code] = [Code]"
DoCmd.RunSQL strSQL
Exit Sub 'ËÂØ´¤Ó¹Ç³µèÍ à¾ÃÒÐàÊÃç¨ÊÔ鹡ÒÃÊÑè¼ÅÔµà¾ÕÂà·èÒ¹Õé
Else
strSQL = "Update [OrderHistory] Set [Limit] = " & lngAddLastProQty _
& " Where [Code] = [Code]"
End If
datPro = DateAdd("d", datLastPro, 1)
lngLeftOrderQty = [Limit] - lngAddLastProQty
End If
Do While lngLeftOrderQty > 0
Loop
End Sub
อาจารย์ครับผมลองแก้ไขโค้ดซึ่งไม่แน่ใจว่าถูกหรือปล่าว แต่ว่ามันมีที่ Error
อยู่ คือตรง datPro = DateAdd("d", datLastPro, 1) มันบอกว่า Is Null
ผมเขียนผิดตรงไหนบ้างครับ และต้องแก้ไขอย่างไร
Time: 0.2814s
คือ สั่งผลิตเต็มกำลังทุกครั้ง ยกเว้นวันสุดท้ายที่เป็นเศษ (กรณีนี้หมายถึง พนักงาน Line นี้จะไม่ถูกโยกไปทำงาน Line อื่น)
สามารถคำนวณได้โดย
1) หาวันที่สุดท้ายของคำสั่งผลิต
Selec max([วันที่สั่งผลิต])
From [ตารางผลิต]
Where [IDToy] = 'รถบังคับ'"
2) หาจำนวนที่สั่งผลิตของวันสุดท้ายนั้น
Select [จำนวนที่สั่งผลิต]
From [ตารางผลิต]
Where [IDToy] = 'รถบังคับ'"
And [วันที่สั่งผลิต] =
1) + 2) =
Select [จำนวนที่สั่งผลิต]
From [ตารางผลิต]
Where [IDToy] = 'รถบังคับ'"
And [วันที่สั่งผลิต] = (Selec max([วันที่สั่งผลิต])
From [ตารางผลิต]
Where [IDToy] = 'รถบังคับ'")
3) ถ้า [จำนวนที่สั่งผลิตของวันสุดท้าย] (ค่าจาก 2)) < [กำลังผลิต]
3.1) ถ้า [จำนวนที่สั่งซื้อ] - [จำนวนที่สั่งผลิตของวันสุดท้าย] <= [กำลังผลิต]
- ให้ update [จำนวนที่สั่งผลิต] = [กำลังผลิต] - [จำนวนที่สั่งซื้อ]
- หยุดการทำงาน
3.2) ถ้า [จำนวนที่สั่งซื้อ] - [จำนวนที่สั่งผลิตของวันสุดท้าย] > [กำลังผลิต]
- ให้ update [จำนวนที่สั่งผลิต] = [กำลังผลิต] - [จำนวนที่สั่งผลิตของวันสุดท้าย]
- [คำสั่งซื้อที่เหลือ] = [จำนวนที่สั่งซื้อ] - ([กำลังผลิต] - [จำนวนที่สั่งผลิตของวันสุดท้าย])
4) วน Loop ตามวันที่ต้องสั่งผลิตเต็มกำลัง
... ไว้ค่อยมาต่อนะครับ ขอตัวไปทำงานก่อน ...