1
ห้อง MS Access / : ขอความช่วยเหลือเรื่องการสแกน barcode เพื่อเพิ่มสินค้าหน่อยครับ
« เมื่อ: 22 มี.ค. 67 , 14:45:21 »ตั้งค่า Page setup ให้พิมพ์ตาม default printer แล้ว Save ครับขอบคุณมากนะครับ
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
ตั้งค่า Page setup ให้พิมพ์ตาม default printer แล้ว Save ครับขอบคุณมากนะครับ
ในความเห็นของผมขอบคุณครับ
ถ้าจะให้ถูกตามหลักการ เกี่ยวกับเลขที่ Inv ถ้าถูกใช้แล้ว หากต้องการยกเลิก ควรจะมีฟิลด์สักอันหนึ่งเป็นตัวมาร์คว่า Cancel
เป็นต้นว่า InvCancel = (Y/N)
เพราะจะได้ทราบว่า Inv เลขที่ดังกล่าวโดน Cancel ในระบบไปแล้ว แต่ตัวเอกสารจริงอาจจะไปถึงมือ หรือ อยู่ในมือลูกค้า
หากมีประเด็นก็จะได้ทราบว่า เอกสาร เลขที่ดังกล่าวโดนยกเลิกไปแล้ว
ถ้าลบ ก็จะเป็นการลบร่องรอยของเอกสารที่ออกไป
มีน้องอีกคน ไม่ทราบวิธี Save As ไฟล์จาก accdb --> mdbได้ครับ
ผมรบกวนเข้าไปแนะนำหน่อยครับ
https://www.thai-access.com/index.php?topic=2436.msg16060#new
Function GenInvNo()ได้แล้วครับ ขอบคุณมากนะครับ
Dim rst1, rst2, rst3 As DAO.Recordset
Dim vStkID, vInvID, vInv1, vInv2, IntMax, vValRef As Long
Dim vStkNo, vInvNo, vInv As String
Dim dbs As Database
Set dbs = CurrentDb()
If IsNull(Me.INvNo) Or (Me.INvNo = "") Then
'สร้างเลขที่ Inv ใบใหม่
vInv = "IV" & Format(Date, "yy") & Format(Date, "MM")
If DCount("Val(Right([InvNo],4))", "[tbl_main]", "Mid([InvNo],1,6) = '" & vInv & "'") = 0 Then
vInvNo = vInv & "0001"
Else
IntMax = DMax("Val(Right([InvNo],4))", "[tbl_main]", "Mid([InvNo],1,6) = '" & vInv & "'")
vInvNo = vInv & Format(IntMax + 1, "0000")
End If
'ใส่ค่าลงไป
Me.INvNo = vInvNo
End If
End Function
ตัวอย่างครับขอบพระคุณมากนะครับอาจารย์ ทำได้แล้วครับ
อันนี้ต้องทำหน้าแยกเพิ่มขี้นมาอีกอันในการยกเลิกรายการ โดยอาศัยหลักการเดียวกัน เพียงแต่จากบวกเพิ่มเป็นลบขอบพระคุณมากๆเลยนะครับ เดี๋ยวผมลองทำดูครับ
rst2.Edit
rst2!Qty = rst2!Qty - 1
rst2.Update
หรือจะไปกำหนดให้ User ไปแก้จำนวนเอาก็ได้ที่ SubForm โดยไปดูที่ Property ของ SubForm : Editting แต่มีความเสี่ยงตรงแก้ผิด
วิธีที่ปลอดภัยสุดคือ ยิงด้วยเลขที InvNo --> ยิงบาร์โค๊ต เพื่อให้ระบบวิ่งไปตรวจสอบความถูกต้องแล้ว ค่อยลดจำนวน
ลองฝึกทำครับ แค่ประสบการณ์จะบังเกิด
ผมมีปรับตัวอย่างเพิ่ม เป็น Sample3.Zipอ๋อ ป่าวครับ หมายถึงว่ารายการเดียวกันที่ยิงแล้วเพิ่มจำนวนเป็น 1 2 3 หากเราต้องการลบยอดเหลือ2 ต้องทำยังไงครับ ถ้าลบทั้งแถวทำได้ครับ
หากต้องการลบ รายการไหนให้คลิ๊เลือกแบบนี้แล้วกด Del
ให้ Download ตัวอย่างไฟล์อีกครั้งครับได้แล้วครับ ไม่พบปัญหาดังกล่าวแล้ว
ผมมีการปรับให้ใหม่แล้ว
ได้ทำตัวอย่างมาให้ศึกษาเป็นแนวทางแล้วนะครับ
โดยมีการแก้ไขซื่อฟิลด์ที่ซื่อ ID ในบาง Table เพื่อให้มือใหม่ได้ตามถูก
เนื่องจากตัวอย่างต้นฉบับที่ได้มาใช้ฟิลด์ ชื่อ ID เหมือนกันหลาย Table อาจจะทำให้เกิดความสับสนได้
โดยตัวอย่างที่ทำให้มีทำตัวอย่างฟังค์ชั่นอื่นเพิ่มให้นิดหน่อย เพื่อ่ให้มองเห็นภาพได้เร็วขี้น
สามารถทำได้ครับ โดยใช้ DAO ช่วยจะทำให้ง่ายขี้นแปลง version ให้แล้ว ขอบพระคุณล่วงหน้านะครับ
แต่เนื่องจากไฟล์ตัวอย่างที่ให้มานั้นเป็นเวอร์ชั่นใหม่ รบกวน Convert ลงเป็น Access2002
ที่มีนามสกุล mdb แล้ว Upload เข้ามาใหม่ครับ เพราะผมใช้เวอร์ชั่นเก่า เลยไม่สามารถทำเป็นตัวอย่างให้ได้ครับ
เปลี่ยนวิธีนะครับอาจารย์ครับ ถ้า Text box "Scan barcode อยู่บน main form แต่เราต้องการ append query ให้ลงบน subform มันต้องทำยังไงครับ ( ถ้าไม่มี subform เป็นform ปกติผมทำได้ครับ เหมือนมัน relationship กันอยู่ มันเลยทำไม่ได้)
ไปใส่ Text Box เพิ่มอีกอันนึง แบบตรงสีส้มที่มีข้อความ "Scan Barcode"
ที่ Event: After Update ของ Text Box อันใหม่นี้ก็สั่ง Run: Append Query เพื่อนำข้อมูลที่มี Barcode ตรงกันมาใส่ในตารางของฟอร์มข้างล่าง
แบบนี้จะเร็วกว่าครับ
อาจารย์ครับ กรณี barcode ที่เราสแกนลงไปมันไม่พบในตารางฐานข้อมูล มันแค่ไม่ append data มา แต่มันจะไม่ขึ้นerrorอะไร ผมไม่รู้จะใช้ on error ตรงไหนครับถ้าเราต้องการให้ cursor อยู่ที่ตำแหน่ง text scanbarcode ตลอด ต้องทำยังไงครับขอบคุณมากนะครับ
-ใช้คำสั่ง text scanbarcode.setfocus
ถ้า barcode ที่เราสแกนลงไป ไม่พบในฐานข้อมูล ให้แสดงเป็นข้อความหรือ error ต้องเขียนยังไงครับ
-ใช้คำสั่ง On Error Goto xxx (ไปค้นวิธีการใช้คำสั่งนี้เองนะครับ)