กระทู้เก่าบอร์ด อ.Yeadram
        
           1,923   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.0850s
    
      
		