เมือคลิก OK ใน MsgBox แล้วจะให้ทำงานแทนปุุ่ม Esc ค
กระทู้เก่าบอร์ด อ.Yeadram

 1,644   5
URL.หัวข้อ / URL
เมือคลิก OK ใน MsgBox แล้วจะให้ทำงานแทนปุุ่ม Esc ค

คือหนูสร้างโค๊ดคำสั่งให้ตรวจสอบข้อมูลหากผู้ใช้คีย์ผิดแล้วจะมี Msg Box ขึ้นมาเตือนว่า "คุณคีย์ข้อมูลผิดกรุณาแก้ไข" ผู้ใช้ต้องกดปุ่ม Esc ที่คีย์บอร์ดเพื่อล้างข้อมูลที่ผิดเสียก่อน จึงจะไปต่อได้ แต่ที่หนูอยากได้คือ เมื่อผู้ใช้คลิก OK ใน MsgBox แล้วจะให้ทำงานแทนปุุ่ม Esc ไปด้วยเลย คือล้างข้อมูลเดิมในเร็คคอร์ดที่ผิดนั้นทั้งหมดทันที ให้เหลือแต่เร็คคอร์ดว่างๆ จากนั้นผู้ใช้จะคีย์ต่อหรือไม่ ก็ว่าไป ไม่ทราบว่าหนูจะต้องเพิ่มคำสั่งตรงไหนได้บ้างคะ

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

1 @R00941
หลังจากแสดง message box แล้ว ให้สั่ง Me.Undo ทุกคอลโทรลบนฟอร์มก็จะแสดงค่าก่อนการแก้ไขใดๆครับ
2 @R00942
แต่การล้างให้เรตอร์ดว่างเปล่าเหมือนก่อนการคีย์นั้น มักไม่ทำกันเพราะผู้ใช้จะต้องมาเสียเวลาป้อนข้อมูลใหม่ในส่วนที่ไม่ผิดทั้งหมดด้วย เราควรจะแสดง msgobx บอกผู้ใช้ว่าที่ฟิลด์ไหนผิดบ้าง แล้วกำหนดโฟกัสไปที่คอนโทรลนั้นโดยเฉพาะ น่าจะ user friendly มากกว่า
3 @R00943
ขอบคุณสำหรับคำแนะนำของอาจารย์สันติสุขค่ะ โดยเฉพาะในความเห็นที่2 หนูจะต้องเขียนคำสั่งอย่างไรแล้วนำไปแทรกไว้ตรงไหนคะ แล้วสมมติถ้าจะให้ล้างเฉพาะฟิลด์ที่ผิดเท่านั้นล่ะ สามารถทำได้ไหมคะอาจารย์
4 @R00945
ขออาสาด้วยครับ

สมมติว่า
textbox ชื่อ txtAge เป็นคอนโทรลตัวที่ 10
คุณต้องการให้กรอกเป็นตัวเลข เมื่อผู้ใช้ไม่ปฎิบัติตาม ให้..
- แจ้งเตือน
- โฟกัสไว้ที่เดิม
- ล้างค่าที่กรอก

Private Sub txtAge_BeforeUpdate(cancel as integer)
if not isnumeric(txtAge) then
msgbox "กรุณากรอกเป็นตัวเลขเท่านั้น"
cancel =true          ' บรรทัดนี้จะล้างค่าที่กรอกผิดๆ ให้โดยอัตโนมัติ
end if
End Sub

ถ้าไม่เขียนโค้ดไว้ในเหตุการณ์นี้ อาจต้องสั่งล้างค่าด้วย เช่น

Private Sub txtAge_Exit()
if not isnumeric(txtAge) then
msgbox "กรุณากรอกเป็นตัวเลขเท่านั้น"
txtAge.setfocus        ' ระบุโฟกัสของเคอร์เซอร์
txtAge=""                   ' ล้างค่าที่กรอกผิด
end if
5 @R00946
ขอขอบคุณ อาจารย์ yeadram อีกท่านนะคะ ครงตามที่หนูต้องการพอดีเลย เดี๋ยวจะรีบลองทำตามดู ถ้ายังไม่ได้จะขอรบกวนเพิ่มเติมอีกนะคะ
ขอขอบคุณอาจารย์ทั้งสองท่าน ที่ให้ความกรุณาค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3026s