กระทู้เก่าบอร์ด อ.Yeadram
1,853 9
URL.หัวข้อ /
URL
เรียบเรียงคำถามใหม่ จากเดิม barcode
เนื่องจากคำถามเก่าไม่มีคนตอบให้ เลยคืดว่าผมเขียนคำถามไม่เข้าใจ
คือ ผมทำงานเกี่ยวกับคลังสินค้า มีการส่งสินค้าผิดพลาด ส่งสินค้าไม่ตรงกับที่ออกเอกสาร หรือส่งไม่ครบกับเอกสาร
ผมเลยคิดว่าจะนำ เครื่อง Scan barcode เข้ามาช่วย โดยผมสร้าง table ไว้ 2 อัน คือ 1.สินค้าที่รอส่ง 2.สินค้าที่ส่งแล้ว
1.1สินค้าที่รอส่งผมจะให้คนที่ทำเอกสารส่งสินค้าใส่ข้อมูล
1.2ทำ form ให้มี ทั้งสอง table เหมือนในรูป
1.3 เพิ่ม textbox เพื่อให้กรอกเลขที่เอกสาร
1.4ให้ tableแรกดึงมาเฉพาะ record ที่ textbox ตรงกับ เลขที่เอกสารใน table1สินค้าที่รอส่ง
1.5 เพิ่มอีก textbox เพื่อให้ตรวจสอบข้อมูล โดยการใช้เครื่อง Scan Barcode (เครื่อง Scan เมื่อยิงเสร็จจะ Enter Auto)
1.6เมื่อ Scan เสร็จ ให้ tranfer จากช่องแรกมาอยู่ที่ ช่องสินค้าที่ส่งแล้ว +เพิ่มเวลาที่ tranfer
++++++ประมาณนี้ครับ +++++++
มีใครเคยทำ หรือมีวิธีทำ ช่วยหน่อยน่ะครับ
ผมมือใหม่จริงๆๆๆ ครับ
tool@slecth.com เมล์ผมครับ
คือ ผมทำงานเกี่ยวกับคลังสินค้า มีการส่งสินค้าผิดพลาด ส่งสินค้าไม่ตรงกับที่ออกเอกสาร หรือส่งไม่ครบกับเอกสาร
ผมเลยคิดว่าจะนำ เครื่อง Scan barcode เข้ามาช่วย โดยผมสร้าง table ไว้ 2 อัน คือ 1.สินค้าที่รอส่ง 2.สินค้าที่ส่งแล้ว
1.1สินค้าที่รอส่งผมจะให้คนที่ทำเอกสารส่งสินค้าใส่ข้อมูล
1.2ทำ form ให้มี ทั้งสอง table เหมือนในรูป
1.3 เพิ่ม textbox เพื่อให้กรอกเลขที่เอกสาร
1.4ให้ tableแรกดึงมาเฉพาะ record ที่ textbox ตรงกับ เลขที่เอกสารใน table1สินค้าที่รอส่ง
1.5 เพิ่มอีก textbox เพื่อให้ตรวจสอบข้อมูล โดยการใช้เครื่อง Scan Barcode (เครื่อง Scan เมื่อยิงเสร็จจะ Enter Auto)
1.6เมื่อ Scan เสร็จ ให้ tranfer จากช่องแรกมาอยู่ที่ ช่องสินค้าที่ส่งแล้ว +เพิ่มเวลาที่ tranfer
++++++ประมาณนี้ครับ +++++++
มีใครเคยทำ หรือมีวิธีทำ ช่วยหน่อยน่ะครับ
ผมมือใหม่จริงๆๆๆ ครับ
tool@slecth.com เมล์ผมครับ
9 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R08309
2 @R08310
3 @R08311
4 @R08336
อยากรู้เหมือนกันค่ะ
5 @R08384
อ่านแล้วยังไม่ค่อยแน่ใจว่าเข้าใจถูกหรือไม่
สมมุติว่าสิ่งที่สแกนเข้าไปคือ lot no แล้วกัน โดยสแกนเข้าที่ txtLotNo เราก็จะใช้ On Exit event เพื่อรองรับการทำงาน
เทเบิลสินค้ารอส่งชื่อ T1
ฟอร์ม F1 แสดงข้อมูลของเทเบิล T1
เทเบิลสินค้าส่งแล้วชื่อ T2
ฟอร์ม F2 แสดงข้อมูลของเทเบิล T2
ฟิลด์ต่างๆมีชื่อดังนี้ ro, productcode, productname, palletcard, lotno, updatetime
Private Sub txtLotNo_Exit(Cancel As Integer)
Dim DB As DAO.Database
Dim SQL As String
Dim InTrans As Boolean
If Nz(Me.txtlotno, "") = "" Then Exit Sub
InTrans = False
On Error GoTo err_rtn
Set DB = CurrentDb
DBEngine.BeginTrans: InTrans = True
SQL = "insert into t2(ro, productcode, productname, palletcard, lotno, updatetime) select ro, productcode, productname, palletcard, lotno, #" & Format(Now(), "dd-mmm-yyyy hh:nn") & "# from T1 where lotno = '" & Me.txtlotno & "' "
DB.Execute SQL
SQL = "delete * from T1 where lotno = '" & Me.txtlotno & "' "
DB.Execute SQL
DBEngine.CommitTrans dbForceOSFlush: InTrans = False
Forms("F1").Requery
Forms("F2").Requery
exit_rtn:
Exit Sub
err_rtn:
If InTrans Then DBEngine.Rollback
MsgBox "error code " & Err.Number & ", " & Err.Description
Resume Next
End Sub
ผมเขียนสดๆนะครับ ไม่ได้ทดสอบว่าผิดตรงไหนหรือไม่ ลองเอาไปศึกษาดูครับ หรือค้นจากกระทู้เก่าด้วยคำสั่งที่ไม่เข้าใจดู
ปล. ภาพเล็กมาก จะอ่านต้องใช้โปรแกรมแว่นขยายส่องดูถึงจะเห็น
สมมุติว่าสิ่งที่สแกนเข้าไปคือ lot no แล้วกัน โดยสแกนเข้าที่ txtLotNo เราก็จะใช้ On Exit event เพื่อรองรับการทำงาน
เทเบิลสินค้ารอส่งชื่อ T1
ฟอร์ม F1 แสดงข้อมูลของเทเบิล T1
เทเบิลสินค้าส่งแล้วชื่อ T2
ฟอร์ม F2 แสดงข้อมูลของเทเบิล T2
ฟิลด์ต่างๆมีชื่อดังนี้ ro, productcode, productname, palletcard, lotno, updatetime
Private Sub txtLotNo_Exit(Cancel As Integer)
Dim DB As DAO.Database
Dim SQL As String
Dim InTrans As Boolean
If Nz(Me.txtlotno, "") = "" Then Exit Sub
InTrans = False
On Error GoTo err_rtn
Set DB = CurrentDb
DBEngine.BeginTrans: InTrans = True
SQL = "insert into t2(ro, productcode, productname, palletcard, lotno, updatetime) select ro, productcode, productname, palletcard, lotno, #" & Format(Now(), "dd-mmm-yyyy hh:nn") & "# from T1 where lotno = '" & Me.txtlotno & "' "
DB.Execute SQL
SQL = "delete * from T1 where lotno = '" & Me.txtlotno & "' "
DB.Execute SQL
DBEngine.CommitTrans dbForceOSFlush: InTrans = False
Forms("F1").Requery
Forms("F2").Requery
exit_rtn:
Exit Sub
err_rtn:
If InTrans Then DBEngine.Rollback
MsgBox "error code " & Err.Number & ", " & Err.Description
Resume Next
End Sub
ผมเขียนสดๆนะครับ ไม่ได้ทดสอบว่าผิดตรงไหนหรือไม่ ลองเอาไปศึกษาดูครับ หรือค้นจากกระทู้เก่าด้วยคำสั่งที่ไม่เข้าใจดู
ปล. ภาพเล็กมาก จะอ่านต้องใช้โปรแกรมแว่นขยายส่องดูถึงจะเห็น
6 @R08437
ขอบคุณ คุณสันติสุข มากครับเดียวลองดูก่อนน่ะครับ
7 @R08442
เรียนคุณ สันติสุข ครับ
นำไปลองแล้วครับใช้ได้ครับ
ติดตรง
Requery ผมต้องแก้ยังไงครับ
นิดหน่อยครับ
ถ้ายังไงช่วยแปล ได้ไหมครับ อยากศึกษาว่าต้องเขียนยังไง
แล้วถ้านำไปใช้กับอีเวนอื่นได้ไหมครับ
อีกอย่างหนึ่งครับ โค้ดนี้นำไปประยุกต์กับ VB6 ได้ไหมครับ
ขอบคุณ คุณสันติสุข อีกครั้งครับ
นำไปลองแล้วครับใช้ได้ครับ
ติดตรง
Requery ผมต้องแก้ยังไงครับ
นิดหน่อยครับ
ถ้ายังไงช่วยแปล ได้ไหมครับ อยากศึกษาว่าต้องเขียนยังไง
แล้วถ้านำไปใช้กับอีเวนอื่นได้ไหมครับ
อีกอย่างหนึ่งครับ โค้ดนี้นำไปประยุกต์กับ VB6 ได้ไหมครับ
ขอบคุณ คุณสันติสุข อีกครั้งครับ
8 @R08444
ผมแก้ได้แล้วครับ
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
ใช้แทน Forms("F1").Requery ได้ไหมครับ
ถ้าผมอยากให้สิ่งที่สแกนเข้าไปคือ lot no หรือ palletcard
ใช้ if ได้ไหมครับ โดยใช้ if left(me.text5,1)="t" then
' lot ตัวแรกจะเป็น T เสมอ palletcard ตัวแรกจะเป็นตัวเลข
แล้วก้อบปี้โค้ดของคุณมาใส่
else
แล้วก้อบปี้โค้ดของคุณมาใส่ แล้วแก้ where lot เป็น where palletcard
endif
ได้หรือเปล่าครับ
หรือผมต้องทำไงครับ
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
ใช้แทน Forms("F1").Requery ได้ไหมครับ
ถ้าผมอยากให้สิ่งที่สแกนเข้าไปคือ lot no หรือ palletcard
ใช้ if ได้ไหมครับ โดยใช้ if left(me.text5,1)="t" then
' lot ตัวแรกจะเป็น T เสมอ palletcard ตัวแรกจะเป็นตัวเลข
แล้วก้อบปี้โค้ดของคุณมาใส่
else
แล้วก้อบปี้โค้ดของคุณมาใส่ แล้วแก้ where lot เป็น where palletcard
endif
ได้หรือเปล่าครับ
หรือผมต้องทำไงครับ
9 @R08445
ถ้า F1 เป็น subform ภายในฟอร์มหลัก F เราอ้างอิงถึง F1 ด้วยรูปแบบ
ถ้าเราแน่ใจว่า PalletCard กับ LotNo ไม่มีทางที่จะมีค่าเหมือนกันเลย เราก็ไม่ต้องใช้ If มานั่งแยกก็ได้ เราก็ใช้ให้มันเช็คทั้ง 2 ฟิลด์ไปพร้อมๆกันเลย เจอฟิลด์ใดฟิลด์หนึ่งที่ตรงกับที่สแกน ก็ถือว่าใช่เรคอร์ดนั้นไปเลย
Forms("F").[ชื่อ subform control ที่ใส่ฟอร์ม F1].Form.Requery
ถ้าเราแน่ใจว่า PalletCard กับ LotNo ไม่มีทางที่จะมีค่าเหมือนกันเลย เราก็ไม่ต้องใช้ If มานั่งแยกก็ได้ เราก็ใช้ให้มันเช็คทั้ง 2 ฟิลด์ไปพร้อมๆกันเลย เจอฟิลด์ใดฟิลด์หนึ่งที่ตรงกับที่สแกน ก็ถือว่าใช่เรคอร์ดนั้นไปเลย
SQL = "insert into t2(ro, productcode, productname, palletcard, lotno, updatetime) select ro, productcode, productname, palletcard, lotno, #" & Format(Now(), "dd-mmm-yyyy hh:nn") & "# from T1 where lotno = '" & Me.txtlotno & "' or palletcard = '" & Me.txtlotno & "' "
DB.Execute SQL
SQL = "delete * from T1 where lotno = '" & Me.txtlotno & "' or palletcard = '" & Me.txtlotno & "' "
Time: 0.3380s