ขอโค้ดเตือนเมื่อมีการแก้ไขข้อมูลจากค่าเริ่มต้นค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 1,434   7
URL.หัวข้อ / URL
ขอโค้ดเตือนเมื่อมีการแก้ไขข้อมูลจากค่าเริ่มต้นค่ะ

ขอรบกวรอาจารย์อีกแล้วค่ะ หนูสร้างฟอร์มสำหรับกรอกข้อมูล ชื่อ/ที่อยู่ ของพนักงานค่ะ ในฟอร์มจะมีอยู่ช่องหนึ่ง สำหรับใส่ข้อมูลจังหวัดซึ่งหนูได้กำหนดค่าเริ่มต้นเอาไว้ว่า"กรุงเทพมหานคร"
ทีนี้หนูอยากกำหนดเหตการสำหรับช่องนี้ว่า หากมีการเปลี่ยนข้อความในช่องนี้เป็นจังหวัดอื่นๆ ก็อยากให้มี msgBox ขึ้นมาถามว่า"คุ?ต้องการเปลี่ยนเป็นจังหวัดอื่นใช่หรือไม่" อะไรทำนองนี้แหละค่ะ เมื่อผู้ใช้คลิกตอบ "ไม่ใ่ช่" ก็ให้กลับไปที่ข้อความเริ่มต้นเดิม "กรุงเทพมหานคร" แต่ถ้าผู้ใช้ยืนยันคลิกตอบว่า "ใช่" ก็ให้ผ่านไปโดยใช้ข้อความตามที่เขาระบุค่ะ
หนูเคยเห็นว่ามีผู้ถามในแนวนี้อยู่เหมือนกัน แต่หนูค้นหาไม่เจอ เลยต้องขอรบกวรอาจารย์ด้วยค่ะ

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

1 @R02943
textbox_beforeUpdate(cancel as integer)
if textbox.text <> textbox.defaultvalue then
     if msgbox("คุณต้องการเปลี่ยนค่าจาก " & vbcrlf & _
     textbox.defaultvalue & " หรือไม่?")<>vbyes then cancel =true
end if
end sub
2 @R02944
ขอบคุณค่ะอาจารย์ แต่ว่า..ยังไม่ตรงตามที่หนูต้องการค่ะ คือมันมีปุ่มให้คลิก OK เพียงปุ่มเดียวเท่านั้น ตามรูปตัวอย่างค่ะ



แต่ว่าหนูอยากให้มันมีปุ่ม Cancel ด้วยค่ะ เพื่อเป็นทางเลือก คือเมื่อคลิกปุ่ม Cancel แล้วให้มันกลับไปที่ค่า Default เช่นเดิมคือ "กรุงเทพมหานคร" ค่ะ ต้องขอรบกวนอาจารย์โปรดเพิ่มเติมให้หนูอีกนิดนึงนะคะ
ขอบคุณค่ะ
3 @R02947
if textbox.text <> textbox.defaultvalue then
     if msgbox("คุณต้องการเปลี่ยนค่าจาก " & vbcrlf & _
     textbox.defaultvalue & " หรือไม่?",vbQuestion+vbYesNo)<>vbyes then cancel =true
'textbox.text=textbox.defaultvalue
'end if
end if
4 @R02948
ขอแสดงความคิดเห็นนะครับอาจารย์ ขอเพิ่มเติมจากอาจารย์
ถ้าไม่เลือกให้ลบทิ้ง ลองอย่างนี้ดูครับ

If MsgBox("คุณต้องการเปลี่ยนค่าจาก" & textbox.Text, vbQuestion + vbYesNo, "แจ้ง") = vbYes Then
Else
textbox = ""
End If
5 @R02951
ขอขอบคุณอาจารย์ทั้งสองท่านเลยนะค่ะ
เดี๋ยวเย็นนี้จะทดลองใช้ดูทั้งสองแบบ แล้วพรุ่งนี้หนูจะมารายงานผลนะคะ
ขอขอบคุณทั้งสองท่านอีกครั้งค่ะ
6 @R02954
OK ใช้ได้เรียบร้อยแล้วค่ะ ตอนแรกก็มีติดขัดเล็กน้อย ต้องดัดแปลงนิดหน่อยค่ะ คือหนูต้องแก้ไขโดยเติม Me.Undo เข้าไปก่อน End if ด้วยค่ะ ไม่งั้นเวลาคลิก No แล้วมันไม่ยอมคืนค่าเดิมให้ค่ะ ตอนนี้ใช้ได้แล้วค่ะ
หนูสังเกตุโค้ดของอาจารย์ทั้งสองดูแล้วเขียนต่างกัน แต่ทำไมให้ผลออกมาเกือบจะเหมือนกันเลย ที่เห็นแตกต่างก็คือข้อความใน MsgBox จะคนละความหมาย แต่ก็นำไปประยุกต์ใช้งานได้ทั้งสองแบบค่ะ
ขอขอบคุณทั้งสองท่านอีกครั้งนะคะ
7 @R02961
พอดีพึ่งไปค้นเจอโค้ดเก่าที่อาจารย์สันติสุขเคยแนะนำกับสมาชิกไว้นานแล้ว ดังนี้ค่ะ

Private Sub TextBox_Dirty(Cancel As Integer)
If Me.NewRecord Then
        If MsgBox("คุณต้องการจะแก้ไขข้อมูลสำคัญนี้ ใช่หรือไม่ ", vbYesNo) = vbNo Then
             Cancel = True
             Exit Sub
        End If
    End If
End Sub

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