กระทู้เก่าบอร์ด อ.Yeadram
9,784 6
URL.หัวข้อ /
URL
การทำ form packing list
อยากทราบวิธีเขียน code สำหรับทำ form packing list เพื่อนับจำนวนกล่องให้ต่อเนื่องกัน เช่น
สินค้า A ต้อง pack ลงกล่องจำนวน 2 กล่อง กล่องที่ 1-2
สินค้า B ต้อง pack ลงกล่องจำนวน 1 กล่อง กล่องที่ 3
สินค้า C ต้อง pack ลงกล่องจำนวน 5 กล่อง กล่องที่ 4-8
สินค้า D ต้อง pack ลงกล่องจำนวน 3 กล่อง กล่องที่ 9-11
รวมทั้งหมด 11 กล่อง
จากตัวอย่าง ถ้าเราใส่จำนวนกล่องลงไป เช่น สินค้า A ใส่ข้อมูลจำนวนกล่องลงไป คือ 2 แล้วให้ access run ตัวเลข number กล่อง คือ 1-2
ต้องเขียน code ใน module หรือ VBA หรือต้องเข้าไปเซ็ทตรงไหนบ้างคะ อยากทราบวิธีทำอย่างละเอียด รบกวนด้วยนะคะ
ขอบคุณล่วงหน้าค่ะ
สินค้า A ต้อง pack ลงกล่องจำนวน 2 กล่อง กล่องที่ 1-2
สินค้า B ต้อง pack ลงกล่องจำนวน 1 กล่อง กล่องที่ 3
สินค้า C ต้อง pack ลงกล่องจำนวน 5 กล่อง กล่องที่ 4-8
สินค้า D ต้อง pack ลงกล่องจำนวน 3 กล่อง กล่องที่ 9-11
รวมทั้งหมด 11 กล่อง
จากตัวอย่าง ถ้าเราใส่จำนวนกล่องลงไป เช่น สินค้า A ใส่ข้อมูลจำนวนกล่องลงไป คือ 2 แล้วให้ access run ตัวเลข number กล่อง คือ 1-2
ต้องเขียน code ใน module หรือ VBA หรือต้องเข้าไปเซ็ทตรงไหนบ้างคะ อยากทราบวิธีทำอย่างละเอียด รบกวนด้วยนะคะ
ขอบคุณล่วงหน้าค่ะ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R08069
ส่งรูปมาให้ค่ะ ในส่วนที่เป็นวงกลม 2 วงค่ะ
วงแรก คือ กล่องที่ ส่วนวงที่ 2 คือ จำนวนกล่องของสินค้า
จากแบบฟอร์มต้องการออกเอกสารใบขนสินค้า
ตอบ จากที่ถามมาค่ะ
1.เป็นจำนวนสินค้าที่ pack ลงกล่องตาม order ลูกค้าค่ะ
2.ดังนั้นสินค้าที่บรรจุลงกล่องจะไม่เท่ากัน
จากภาพ (ยกตัวอย่างอีกทีจากภาพค่ะ)
- สินค้า Item 125658 มี order จากลูกค้า 400 ชิ้น บรรจุลงกล่องได้ 2 กล่อง กล่องละ 200 ชิ้น (ตามขนาดของกล่อง) โดยกำหนดให้เป็นกล่องที่ 1 และกล่องที่ 2
- สินค้า Item 125659 มี order จากลูกค้า 200 ชิ้น บรรจุลงกล่องได้ 1 กล่อง กล่องละ 200 ชิ้น (ตามขนาดของกล่อง) โดยกำหนดให้เป็นกล่องที่ 3
ถ้าเราต้องการ key ลงใน form เฉพาะจำนวนกล่อง เช่น สินค้า Item 125658 จะ key เฉพาะจำนวนกล่อง 2 กล่อง (จากภาพจะเป็นวงกลมสีดำวงที่ 2) แล้วให้ form run เลขกล่องที่ 1 , เลขกล่องที่ 2 ในรูปแบบ 1-2 (วงกลมวงแรก) ตามภาพค่ะ ต้อง set อย่างไรค่ะ
ส่งรูปมาให้ค่ะ ในส่วนที่เป็นวงกลม 2 วงค่ะ
วงแรก คือ กล่องที่ ส่วนวงที่ 2 คือ จำนวนกล่องของสินค้า
จากแบบฟอร์มต้องการออกเอกสารใบขนสินค้า
ตอบ จากที่ถามมาค่ะ
1.เป็นจำนวนสินค้าที่ pack ลงกล่องตาม order ลูกค้าค่ะ
2.ดังนั้นสินค้าที่บรรจุลงกล่องจะไม่เท่ากัน
จากภาพ (ยกตัวอย่างอีกทีจากภาพค่ะ)
- สินค้า Item 125658 มี order จากลูกค้า 400 ชิ้น บรรจุลงกล่องได้ 2 กล่อง กล่องละ 200 ชิ้น (ตามขนาดของกล่อง) โดยกำหนดให้เป็นกล่องที่ 1 และกล่องที่ 2
- สินค้า Item 125659 มี order จากลูกค้า 200 ชิ้น บรรจุลงกล่องได้ 1 กล่อง กล่องละ 200 ชิ้น (ตามขนาดของกล่อง) โดยกำหนดให้เป็นกล่องที่ 3
ถ้าเราต้องการ key ลงใน form เฉพาะจำนวนกล่อง เช่น สินค้า Item 125658 จะ key เฉพาะจำนวนกล่อง 2 กล่อง (จากภาพจะเป็นวงกลมสีดำวงที่ 2) แล้วให้ form run เลขกล่องที่ 1 , เลขกล่องที่ 2 ในรูปแบบ 1-2 (วงกลมวงแรก) ตามภาพค่ะ ต้อง set อย่างไรค่ะ
3 @R08071
สร้างตุ๊กตา ขึ้นมาก่อน
ลองสร้่างปุ่ม ขึ้นมา แล้วลองใส่ code ดู นะครับ
Private Sub Command0_Click()
Dim rs As DAO.Recordset
Dim i As Integer 'รับค่าจำนวนกล่องของสินค้าแต่ละตัว
Dim no As Integer 'รับค่า หมายเลขกล่องที่บรรจุสินค้า
'สมมุติตาราง เก็บคำสั่งซื้อ = tborder มีรหัสสินค้า เป็น ProductPK
'จำนวนสั่งซื้อ Quantity
Set rs = CurrentDb.OpenRecordset("Select * From tborder Order by ProductPK")
'กำหนด กล่องบรรจุสินค้าเริ่มต้นที่ กล่องที่ 1
no = 1
'ตรวจสอบรายการสินค้า
If rs.RecordCount > 0 Then
Do While Not rs.EOF
'ถ้าจำนวนสินค้า ครบ 200 ชิ้น พอดี
'เอาจำนวนหารด้วย 200 =จำนวนกล่องที่บรรจุ
If rs!quantity Mod 200 = 0 Then
i = rs!quantity \ 200
Else 'จำนวนสินค้าไม่พอดี ให้+เศษอีก 1
i = (rs!quantity \ 200) + 1
End If
' จะนำค่าไปทำอะไร ต่อยอดตรงนี้ครับ แสดงให้ดู
MsgBox "no " & Trim(Str(no)) & " - " & Trim(Str(no + i - 1))
rs.MoveNext
' เริ่มกล่องถัดไป
no = no + i
Loop
End If
rs.Close
Set rs = Nothing
End Sub
ลองสร้่างปุ่ม ขึ้นมา แล้วลองใส่ code ดู นะครับ
Private Sub Command0_Click()
Dim rs As DAO.Recordset
Dim i As Integer 'รับค่าจำนวนกล่องของสินค้าแต่ละตัว
Dim no As Integer 'รับค่า หมายเลขกล่องที่บรรจุสินค้า
'สมมุติตาราง เก็บคำสั่งซื้อ = tborder มีรหัสสินค้า เป็น ProductPK
'จำนวนสั่งซื้อ Quantity
Set rs = CurrentDb.OpenRecordset("Select * From tborder Order by ProductPK")
'กำหนด กล่องบรรจุสินค้าเริ่มต้นที่ กล่องที่ 1
no = 1
'ตรวจสอบรายการสินค้า
If rs.RecordCount > 0 Then
Do While Not rs.EOF
'ถ้าจำนวนสินค้า ครบ 200 ชิ้น พอดี
'เอาจำนวนหารด้วย 200 =จำนวนกล่องที่บรรจุ
If rs!quantity Mod 200 = 0 Then
i = rs!quantity \ 200
Else 'จำนวนสินค้าไม่พอดี ให้+เศษอีก 1
i = (rs!quantity \ 200) + 1
End If
' จะนำค่าไปทำอะไร ต่อยอดตรงนี้ครับ แสดงให้ดู
MsgBox "no " & Trim(Str(no)) & " - " & Trim(Str(no + i - 1))
rs.MoveNext
' เริ่มกล่องถัดไป
no = no + i
Loop
End If
rs.Close
Set rs = Nothing
End Sub
4 @R08072
ขอบคุณมากเลยค่ะ จะลองเอาไปทำดูก่อน ถ้าติดปํญหาจะขอรบกวนมาอีกนะคะ
5 @R08074
รบกวนถามค่ะ
1. ถ้าจำนวนที่บรรจุลงกล่องไม่แน่นอน อาจจะ 50,100,150 หรือ 200 เป็นต้น
ในคำสั่ง If rs!quantity Mod 200 = 0 Then กำหนดอย่างไรคะ
2. คำสั่งดังกล่าวจะเข้าไป set ได้ที่ไหนคะ เผอิญสร้างฟอร์มเอาไว้
รบกวนด้วยนะ เพราะอาจจะใช้คำสั่งไม่เป็น เคยแต่ใช้รูปแบบธรรมดาในการสร้างฟอร์มค่ะ
1. ถ้าจำนวนที่บรรจุลงกล่องไม่แน่นอน อาจจะ 50,100,150 หรือ 200 เป็นต้น
ในคำสั่ง If rs!quantity Mod 200 = 0 Then กำหนดอย่างไรคะ
2. คำสั่งดังกล่าวจะเข้าไป set ได้ที่ไหนคะ เผอิญสร้างฟอร์มเอาไว้
รบกวนด้วยนะ เพราะอาจจะใช้คำสั่งไม่เป็น เคยแต่ใช้รูปแบบธรรมดาในการสร้างฟอร์มค่ะ
6 @R08076
เวลาที่เราต้องเขียน โปรแกรม เราต้องรู้ requirement ของผู้ใช้
อันนี้เป็นตัวอย่างหนึ่งที่ ผู้ถามจะต้องสื่อให้ผู้ตอบทราบครับ
กรณีนี้ ยังแตกเป็น
1 สินค้าแต่ละชนิดใช้กล่องเจาะจง
ปกติ เราต้องมีตารางสำหรับตั้งค่าว่าสินค้า A ใช้กล่องบรรจุกี่ชิ้น
เช่น A ใช้กล่อง 50 , B ->100 , C-->150 เป็นต้น
แล้ว นำตัวเลขนี้ ไปหาร จำนวนสินค้าที่สั่ง จะได้ จำนวนกล่องที่ใช้บรรจุ
2 สินค้าแต่ละชนิดใช้กล่องไม่เจาะจง
ในการเติมจำนวนสินค้าที่สั่งซื้อ จะต้องระบุประเภทกล่องลงไปด้วย
เพื่อรู้ว่า สั่งสินค้าเท่าไหร่ เช่น 300 ชิ้น ใช้กล่อง บรรจุเท่าไหร่ เช่น 50 ชิ้น
จะได้จำนวนกล่องจาก 300/50=6 กล่อง
สรุป : ถ้าเพิ่มความยืดหยุ่น ในการทำงาน ต้องสร้างตาราง
เก็บข้อมูล รหัสประเภทกล่อง และ ความจุสินค้า (กี่ชิ้นต่อกล่อง)
คำสั่งดังกล่าวจะเข้าไป set ได้ที่ไหนคะ
ตรงนี้ มันเป็นจินตนาการในการสร้างและนำไปใช้ ผมไม่ทราบว่าการนำไปใช้จะใช้ในรูปแบบไหน (requirement ไม่ชัดเจน)
ถ้านำไปออกรายงาน ก็ต้อง บันทึกเข้าไปเก็บในตารางที่ต้องนำไปออกรายงานลองเล่า กระบวนการตรงนี้ อีกหน่อยซิครับ
อันนี้เป็นตัวอย่างหนึ่งที่ ผู้ถามจะต้องสื่อให้ผู้ตอบทราบครับ
กรณีนี้ ยังแตกเป็น
1 สินค้าแต่ละชนิดใช้กล่องเจาะจง
ปกติ เราต้องมีตารางสำหรับตั้งค่าว่าสินค้า A ใช้กล่องบรรจุกี่ชิ้น
เช่น A ใช้กล่อง 50 , B ->100 , C-->150 เป็นต้น
แล้ว นำตัวเลขนี้ ไปหาร จำนวนสินค้าที่สั่ง จะได้ จำนวนกล่องที่ใช้บรรจุ
2 สินค้าแต่ละชนิดใช้กล่องไม่เจาะจง
ในการเติมจำนวนสินค้าที่สั่งซื้อ จะต้องระบุประเภทกล่องลงไปด้วย
เพื่อรู้ว่า สั่งสินค้าเท่าไหร่ เช่น 300 ชิ้น ใช้กล่อง บรรจุเท่าไหร่ เช่น 50 ชิ้น
จะได้จำนวนกล่องจาก 300/50=6 กล่อง
สรุป : ถ้าเพิ่มความยืดหยุ่น ในการทำงาน ต้องสร้างตาราง
เก็บข้อมูล รหัสประเภทกล่อง และ ความจุสินค้า (กี่ชิ้นต่อกล่อง)
คำสั่งดังกล่าวจะเข้าไป set ได้ที่ไหนคะ
ตรงนี้ มันเป็นจินตนาการในการสร้างและนำไปใช้ ผมไม่ทราบว่าการนำไปใช้จะใช้ในรูปแบบไหน (requirement ไม่ชัดเจน)
ถ้านำไปออกรายงาน ก็ต้อง บันทึกเข้าไปเก็บในตารางที่ต้องนำไปออกรายงานลองเล่า กระบวนการตรงนี้ อีกหน่อยซิครับ
Time: 0.2395s
1 สินค้าแต่ละตัว ทีบรรจุกล่อง มีจำนวนกล่องแน่นอนหรือไม่ ในอนาคตอาจมีการเปลี่ยนแปลง อีกมั้ย
2 ถ้าข้อ 1 มีจำนวนแน่นอน เลขที่ในการ running fix เลขที่เดิมตลอด ใช่หรือไม่
ในทางกลับกัน
ถ้า จำนวนกล่องไม่แน่นอน แสดงว่า
สินค้า A Run 1-2-3-4
สินค้า B Run 5-6
สินค้า C Run 7-8-9
เป็นต้น
3 แล้วรายการสินค้า ไม่จำเป็นต้องเป็น A-D อาจเป็น A,C,D ก็ได้ใช่ไหม