กระทู้เก่าบอร์ด อ.Yeadram
8,703 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
(ช่วยกรุณาแนะนำหน่อยนะค่ะ)
ก็ต่อเมื่อ มีการกดบันทึกเท่านั้น...
และสิ่งที่ต้องการมีอยู่ว่า อยากให้ข้อความมันขึ้นเมื่อกดบันทึก เช่น "บันทึกข้อมูลเรียบร้อยแล้ว" และหากผู้ใช้ยังไม่ได้บันทึกข้อมูลก่อนจะปิดหน้านี้ให้เตือนข้อความว่า
"กรุณาบันทึกข้อมูล" ประมานนี้อะค่ะ
โค้ดที่ใส่ใน ปุ่มบันทึกปัจจุบันเป็นแบบนี้ (ไม่ทราบว่าจะต้องใส่ 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
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 "กรุณาบันทึกข้อมูล" อะค่ะ
ต้องแก้ไขยังไงอะค่ะรบกวนช่วยตอบอีกครั้งนะค่ะ
โค้ดตรงส่วนพอกดบันทึกมันขึ้นดีอยู่นะ
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
ปรับใช้ดูครับ
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 นี้มาและช่วยแนะนำวิธีทำให้ไม่ขึ้นหน้าต่างแบบนี้ด้วยนะค่ะ (ขอบคุณค่ะ) ^^
เมื่อกด 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 จะมีผลต่อเมื่อยังไม่มีการบันทึกแล้วสั่งปิดโปรแกรมเท่านั้น
การแก้ไขคือการแก้ที่ 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
มาแล้วใช่ได้เลย แต่หนูอยากให้เวลากดบันทึกแล้วให้โชว์ฟอร์มหน้าป่าวขึ้นมาทำได้ป่าวค่ะ
พอดีทำหน้าฟอร์ป่าวไว้กรอกข้อมูล แต่พอกดบันทึกแล้วข้อมูลไปบันทึกในฟอร์มที่เลือกจริงแต่ฟอร์มป่าวที่ไว้เพิ่มข้อมูลยังมีข้อมูลที่บันทึกค้างอยู่มีวิธีแก้ไข้ไหมค่ะ
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
DoCmd.GoToRecord , , acNewRec
Time: 0.3384s
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
ประมาณนี้ครับ