วิธีตัด stock โดยใช้ command ใน access ค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 2,917   2
URL.หัวข้อ / URL
วิธีตัด stock โดยใช้ command ใน access ค่ะ

คือตาราง tblProduct มีฟิลด์จำนวนสินค้าชื่อ ProdQty
แล้วทีนี้หน้า form สั่งซื้อสินค้าชื่อ FrmBill เวลากรอกจำนวนสินค้าไปว่าต้องการจำนวนเท่าไหร่ แล้วพอกดปุ่ม อยากให้มันตัด stock ให้เลยน่ะค่ะ ( text box ของจำนวนที่ต้องการซื้อ ชื่อ txtQty ค่ะ ) ลองใส่แบบนี้ดูแต่มันก็ไม่ได้น่ะค่ะ

Private sub command1_click()
dim sql as string
sql="Update tblProduct set ProdQty = ProdQty - "&me.txtQty&"
where ProdCode='"&me.txtProdCode&"';"
currentproject.connection.execute sql
End sub

มีรูปแบบอื่นอีกมั้ยคะ อันนี้ก็ไปหาจากเว็บอื่นๆแล้วมาลองปรับดูน่ะค่ะ

2 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R13800
ลองเปลี่ยนวิธีได้แล้วค่ะแต่ติดปัญหาคือ มันอัพเดทสต๊อกได้นะคะ แต่มันอัพเดททุกเรคคอร์ดเลย แล้วลองพยายามดูแล้ว ไม่รุจะใส่ where ยังไง ตรงไหน ก้ทำไม่ได้เลยอ่ะค่ะ จะทำยังไงดีคะ T^T

Private Sub Command56_Click()
Dim a As Integer
Dim b As Integer
Dim sql As String
Dim c As Integer
Dim d As String
a = [Forms]![FrmBill].[Form]![txtQty]
b = CInt(DLookup("ProdQty", "tblProduct", "Prodcode='" & Me![txtProdCode] & "'"))


sql = "Update tblProduct set ProdQty=" & b - a
CurrentProject.Connection.Execute sql
End Sub

ขอบคุนมากๆนะคะ
2 @R13809
เอาวิธีแรกนะครับ โค้ดสั้นดี
Private sub command1_click()
dim sql as string
sql="Update tblProduct set ProdQty = (nz(ProdQty,0) - " & nz(me.txtQty,0)
sql = sql & ") where ProdCode Like '" & me.txtProdCode & "';"
Debug.print sql
' currentproject.connection.execute sql
End sub


1 เพิ่มการป้องกัน Error เนื่องจากชนิดข้อมูล , และความมีอยู่ของข้อมูล (not null)
2 เปลี่ยน operator ในส่วนของ Where
3 ให้มีการ Debug เช็คสายอักขระก่อน เพื่อดูว่า ค่าของ ตัวลบ และค่าของ เงื่อนไข ถูกต้องหรือไม่ โดย ได้ทำการ เบรคคำสั่งที่จะรัน sql ไว้ก่อน
4 ให้ทำการตรวจเช็คสายอักขระ ใน SQL ครับ ว่า ถูกต้องทั้งเรื่อง วรรคตอน ค่าข้อมูล และเครื่องหมายทุกอย่าง ถูกต้องครบถ้วนดีหรือไม่ แล้วค่อยสั่งรัน

หากคิดว่าสายอักขระ ถูกต้องแล้ว แต่สงสัยทำไม ไม่ได้ผลดังใจ ให้เปลี่ยน "ตัวกระทำ" เป็น Access แทน ADO ครับ (เพราะผมคิดว่า มันดักเช็ค error ได้ง่ายกว่า)

' Debug.print sql ถ้ามั่นใจว่าสายอักขระถูกแล้ว ก็เลิก debug
on error resume next
docmd.runsql sql
if err<>0 then
debug.print sql & vbcrlf & err.number & vbcrlf & err.description
err.clear
end if
on error goto 0
' Currentproject.connection.execute sql
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2663s