วิธีเขียนโค้ดบันทึกข้อมูล ให้มี msg box ขึ้น
กระทู้เก่าบอร์ด อ.Yeadram

 8,551   9
URL.หัวข้อ / URL
วิธีเขียนโค้ดบันทึกข้อมูล ให้มี msg box ขึ้น

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

โค้ดที่ใส่ใน ปุ่มบันทึกปัจจุบันเป็นแบบนี้ (ไม่ทราบว่าจะต้องใส่ msg box ตรงไหน)

Option Compare Database
Option Explicit
Dim IsSaveClicked   As Boolean
Private Sub Form_Error(DataErr As Integer, Response As Integer)
    IsSaveClicked = False

End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Cancel = Not IsSaveClicked
End Sub

Private Sub Form_AfterUpdate()
    IsSaveClicked = False
End Sub

Private Sub Command44_Click()
    IsSaveClicked = True
    Me.Dirty = False

End Sub

(ช่วยกรุณาแนะนำหน่อยนะค่ะ)

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

1 @R14617
Private Sub Command44_Click()
    IsSaveClicked = True
    Me.Dirty = False
    MsgBox "บันทึกข้อมูลเรียบร้อยแล้ว"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Me.Dirty and Not IsSaveClicked Then
        MsgBox "กรุณาบันทึกข้อมูล"
        Cancel = True
    End If
End Sub

ประมาณนี้ครับ
2 @R14627
มีปัญหาอีกแล้วค่ะ
โค้ดตรงส่วนพอกดบันทึกมันขึ้นดีอยู่นะ

Private Sub Command44_Click()
    IsSaveClicked = True
    Me.Dirty = False
    MsgBox "บันทึกข้อมูลเรียบร้อยแล้ว"
End Sub

แต่โค้ดในส่วนนี้..

Private Sub Form_Unload(Cancel As Integer)
    If Me.Dirty and Not IsSaveClicked Then
        MsgBox "กรุณาบันทึกข้อมูล"
        Cancel = True
    End If
End Sub

มันไม่ขึ้น MsgBox "กรุณาบันทึกข้อมูล" อะค่ะ
ต้องแก้ไขยังไงอะค่ะรบกวนช่วยตอบอีกครั้งนะค่ะ
3 @R14637
โค๊ดส่วนนี้ยกเลิกครับ
Private Sub Form_Unload(Cancel As Integer)
    If Me.Dirty and Not IsSaveClicked Then
        MsgBox "กรุณาบันทึกข้อมูล"
        Cancel = True
    End If
End Sub

แก้ไขในส่วน On Error เป็น

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    If MsgBox("กรุณาบันทึกข้อมูล", vbQuestion + vbYesNo, "Save Record?") = vbYes Then
        IsSaveClicked = True
        Me.Dirty = False
        MsgBox "บันทึกข้อมูลเรียบร้อยแล้ว"
    Else
        IsSaveClicked = False
    End If
    Response = acDataErrContinue
End Sub

ปรับใช้ดูครับ
4 @R14638
ลองแล้วคระ เมื่อแก้ไขข้อมูลในฟอร์มหากไม่กดบันทึก มันจะขึ้น MsgBox แบบนี้


เมื่อกด YES ก้อจะปรากฏ MsgBox แบบนี้


และเมื่อกด OK จะมีหน้าต่างนี้ขึ้นมา


รบกวนช่วยอธิบายหน้าต่างนี้หน่อยนะ ทำไมมันถึงขึ้นหน้าต่าง Action Failde นี้มาและช่วยแนะนำวิธีทำให้ไม่ขึ้นหน้าต่างแบบนี้ด้วยนะค่ะ (ขอบคุณค่ะ) ^^
5 @R14639
เป็นเพราะคุณกดปุ่ม เลื่อนเรคคอร์ด ที่สร้างขึ้นจากการใช้ Wizards ของ MS Access ทำใช่ไหมครับ โดยจากรูปเป็นการกดปุ่ม Last เรคคอร์ดสุดท้าย
การแก้ไขคือการแก้ที่ Macro ของปุ่ม โดยเพิ่มการดัก Error ดังนี้ครับ
ที่ Property On Click ของปุ่ม Last กดปุ่ม ... เข้าไปจะเป็นการแก้ไข Macro ของปุ่ม แก้ตามรูปนี้ครับ



ส่วนโค๊ดเหมือนเดิมครับ คงไม่ต้องแก้อะไร
หากมีปุ่ม First ก็ทำเช่นกัน
ส่วน Next, Previous ผมลองดู Wizards มันสร้างโค๊ดดัง Error ให้อยู่แล้ว เพราะฉนั้นจะมีปัญหา น่าจะแค่ปุ่ม First กับ Last เท่านั้นครับ ลองทำดู
ส่วนโค๊ดใน On Error จะมีผลต่อเมื่อยังไม่มีการบันทึกแล้วสั่งปิดโปรแกรมเท่านั้น
6 @R14640
ใช้ค่ะ.. ดิฉันสร้างขึ้นจากการใช้ Wizards ของ MS Access
ขอบคุณมากนะค่ะตอนนี้แก้ปัญหาตามที่คุณบอกได้แล้วค่ะ

ขอบคุณอีกครั้งนะค่ะ ^^"
7 @R18186
หนูก็อป
Private Sub Command44_Click()
    IsSaveClicked = True
    Me.Dirty = False
    MsgBox "บันทึกข้อมูลเรียบร้อยแล้ว"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Me.Dirty and Not IsSaveClicked Then
        MsgBox "กรุณาบันทึกข้อมูล"
        Cancel = True
    End If
End Sub
มาแล้วใช่ได้เลย แต่หนูอยากให้เวลากดบันทึกแล้วให้โชว์ฟอร์มหน้าป่าวขึ้นมาทำได้ป่าวค่ะ
พอดีทำหน้าฟอร์ป่าวไว้กรอกข้อมูล แต่พอกดบันทึกแล้วข้อมูลไปบันทึกในฟอร์มที่เลือกจริงแต่ฟอร์มป่าวที่ไว้เพิ่มข้อมูลยังมีข้อมูลที่บันทึกค้างอยู่มีวิธีแก้ไข้ไหมค่ะ
8 @R18187
หนูขอโค้ดที่ทำปุ่มแก้ไขข้อมูลหน่อยนะค่ะ
9 @R18192
โค๊ดทำปุ่มแก้ไข ไม่เข้าใจว่าหมายถึงอะไร ส่วนหน้าเปล่าใช่หมายถึง New Record หรือป่าว ถ้าใช่ก็ใช้คำสั่ง

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