เรียบเรียงคำถามใหม่ จากเดิม barcode
กระทู้เก่าบอร์ด อ.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 เมล์ผมครับ


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

ผมเขียนสดๆนะครับ ไม่ได้ทดสอบว่าผิดตรงไหนหรือไม่ ลองเอาไปศึกษาดูครับ หรือค้นจากกระทู้เก่าด้วยคำสั่งที่ไม่เข้าใจดู

ปล. ภาพเล็กมาก จะอ่านต้องใช้โปรแกรมแว่นขยายส่องดูถึงจะเห็น
6 @R08437
ขอบคุณ คุณสันติสุข มากครับเดียวลองดูก่อนน่ะครับ
7 @R08442
เรียนคุณ สันติสุข ครับ
นำไปลองแล้วครับใช้ได้ครับ
ติดตรง
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
ได้หรือเปล่าครับ
หรือผมต้องทำไงครับ
9 @R08445
ถ้า F1 เป็น subform ภายในฟอร์มหลัก F เราอ้างอิงถึง F1 ด้วยรูปแบบ

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 & "' "
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3380s