กระทู้เก่าบอร์ด อ.Yeadram
1,727 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
สมมติว่า
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 อีกท่านนะคะ ครงตามที่หนูต้องการพอดีเลย เดี๋ยวจะรีบลองทำตามดู ถ้ายังไม่ได้จะขอรบกวนเพิ่มเติมอีกนะคะ
ขอขอบคุณอาจารย์ทั้งสองท่าน ที่ให้ความกรุณาค่ะ
ขอขอบคุณอาจารย์ทั้งสองท่าน ที่ให้ความกรุณาค่ะ
Time: 0.3097s