ลบค่า ใน textbox แล้ว อยากให้ สั่ง F9 ควรใส่ Code
กระทู้เก่าบอร์ด อ.Yeadram

 1,600   13
URL.หัวข้อ / URL
ลบค่า ใน textbox แล้ว อยากให้ สั่ง F9 ควรใส่ Code

ลบค่า ใน textbox แล้ว ก่อนที่จะ ใส่ค่าใหม่ลงไป อยากให้ สั่ง F9 ควรใส่ Code ที่ Event ไหนครับ
และ ใช้ Code Requery ใช่รึป่าวครับ

ขอบคุณครับ

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

1 @R21677
ไม่ทราบเหตุผลว่าทำไมลบค่าแล้วต้องสั่งอย่างนั้น ยังไงก็ตาม มี 2 คำสั่ง คือ Me.Refresh ซึ่งจะดึงข้อมูลเฉพาะจากเรคอร์ดที่กำลังแสดงอยู่ออกมาใหม่ และ Me.Requery ซึ่งคล้ายกันแต่จะดึงเรคอร์ดตามเงื่อนไขของ RecordSource ออกมาใหม่ ถ้ามีเรคอร์ดที่เพิ่มหรือลบ ผลการแสดงก็จะเปลี่ยนแปลงไปตามเรคอร์ดที่มีอยู่ในปัจจุบันด้วย
2 @R21678
ใน ช่อง ใส่จำนวน วัสดุ ที่จะเบิก ผมใส่ code เชคจำนวน ที่มีอยู่ แล้ว ให้ใส่ ค่าได้ไม่เกิน จำนวนที่มีอยู่

Private Sub MR_Item_Qty_BeforeUpdate(Cancel As Integer)
Dim x
x = Nz(DLookup("Balance", "Q_Inventory Stock", "[Item_Code] Like '" & txt_Item_Code & "'"), 0)
If MR_Item_Qty > x Then
MsgBox "Over Stock!!" & vbCrLf & "Please fill less than or equal " & x
Cancel = True
End If
End Sub

อันนี้ ผ่าน ครับ ถ้าใส่เกิน ต้อง ใส่ ให้เท่ากันหรือน้อยกว่า

แต่พอใส่ ค่า ถูกต้องแล้ว เคอเซอร์ ไป ที่ ช่องอื่นแล้ว เราจะกลับมาแก้ไข จำนวนของวัสดุที่มีอยู่ที่จะแจ้งขึ้นใน msgbox จะ ไม่อัพเดทครับ มันจะ ลบค่าออกจากจำนวนที่เราใส่ครั้งแรก

เช่น มี วัสดุ จำนวน 2300 ครั้งแรก ใส่ 1000
พอจะกลับไปแก้ไข msgbox จะคำนวนจำนวน ที่มีอยู่ เป็น 1300 ไม่ใช่ 2300 ครับ จึงจำเป็นต้อง รีเฟรช หลังจากที่ลบค่าเก่า ก่อนที่จะใส่ค่าใหม่ ครับ
3 @R21679
ให้ใช้ If Nz(MR_Item_Qty.OldValue,0) > x Then ครับ

.OldValue จะเป็นค่าเดิมในเรคอร์ดนั้นๆก่อนถูกบันทึก การเลื่อนไปฟิลด์อื่นในเรคอร์ดเดียวกัน ไม่ทำให้ค่า .OldValue เปลี่ยนไป แต่จะอ้างอิงได้เฉพาะกับฟิลด์ที่ผูกเข้ากับฟิลด์ในเทเบิลเท่านั้นครับ และเนื่องจากในเรคอร์ดใหม่ที่กำลังจะป้อน ค่านี้เป็นค่า Null ก็ต้องใส่ฟังก์ชั่น Nz( ) คลุมไว้ด้วย
4 @R21680
อาจารย์ ครับ

ใช้
Nz(MR_Item_Qty.OldValue,0) > x

แล้ว msg box ไม่ทำงาน ครับ
5 @R21681
มัน ยอม ให้ใส่ ค่าเกิน จำนวนวัสดุที่มีอยู่ ครับ
6 @R21682
MR_Item_Qty เป็นเท็กซ์บ็อกซ์ที่ผูกเข้ากับฟิลด์ในเทเบิลหรือเปล่าครับ ? ถ้าไม่ใช่ จะใช้วิธีนี้ไม่ได้
7 @R21683
ใช่ ครับ ผูกกับ ฟิลด์ ในเทเบิล ครับ
8 @R21684
งั้นที่บอกว่า "แต่พอใส่ ค่า ถูกต้องแล้ว เคอเซอร์ ไป ที่ ช่องอื่นแล้ว เราจะกลับมาแก้ไข" หมายถึงได้เลื่อนผ่านเรคอร์ดเดิมนี้ไปแล้ว และมีการปรับปรุงค่า Balance ไปแล้วใช่ไหมครับ ถ้าอย่างนั้น ไม่มีทางที่จะกลับมาคำนวนได้ค่า Balance เป็น 2300 แล้วหล่ะครับ
9 @R21685
เดี๋ยวก่อนนะครับ ชักงงแล้ว
10 @R21686
โอเค สมมุติเราไม่พูดถึงโค้ดที่ผมให้ไปนะ ถ้ายังเป็นโค้ดเดิมของคุณอยู่ ที่ผมถามใน R21684 ช่วยตอบทีครับ
11 @R21687
หมายถึงได้เลื่อนผ่านเรคอร์ดเดิมนี้ไปแล้ว และมีการปรับปรุงค่า Balance ไปแล้วใช่ไหมครับ

// ใช่ครับ
12 @R21688
ถ้าอย่างนั้น ค่า Balance ที่หาได้ ต้องไม่รวมค่าในเรคอร์ดที่กำลังแก้ไข MR_Item_Qty ครับ ดังนั้นเรคอร์ดต่างๆต้องมีอะไรที่ unique เพียงพอที่จะระบุเข้าไปใน Dlookup( ) เพื่อไม่ให้รวมเรคอร์ดปัจจุบันเข้าไป
13 @R21690
ครับ อาจารย์

ตอนนี้ ลองทำ โดย ใส่event On click

Me.MR_Item_Qty = ""
Me.Refresh

ก็ได้ตามที่ต้องการแล้วครับ

ขอบคุณอาจารย์ที่ช่วยเหลือนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2997s