我有一個表單,用戶可以在其中編輯多個不同的資料。此表單基于從幾個底層表中提取并放入臨時表中的資料。當用戶進行更改并點擊“保存”按鈕時,表單中所做的任何更改都會更新/附加到基礎資料表,并且臨時表中的所有內容都會被轉儲。這一切都很好。
我的問題是表單上的本機關閉按鈕。如果用戶進行了更改,忘記點擊保存,而只是關閉表單,則不會保存任何內容。我認為這是因為我需要運行我的更新和附加查詢(這就是我的保存按鈕發生的情況),但我不確定如何將它們合并,以便它們與本機關閉按鈕一起運行。當我嘗試將它們添加到 Form_Close 事件時,我收到一條錯誤訊息,指出 BeforeUpdate 事件中的某些內容阻止 Access 保存資料。我知道我可以從表單中洗掉關閉按鈕,但如果可能,我寧愿將其保留。
Form_BeforeUpdate
txtOld = Nz(Me.Document.OldValue, "")
If Not (Me.NewRecord) Then
If MsgBox("Changes have been made to this record. Save changes?", vbYesNo, "") = vbNo Then
DoCmd.RunCommand acCmdUndo
End If
End If
cmdSave_Click
On Error GoTo Error_Handler
DoCmd.RunCommand acCmdSaveRecord
'check to see if new book field has changed and run append query if it has
If txtOld <> Me.Document.Value Then
DoCmd.OpenQuery "qryUpdateNewBookList"
End If
'This update query should run every time
DoCmd.OpenQuery "qryEditUpdate"
DoCmd.Close acForm, Me.Name, acSaveNo
Form_Close
DoCmd.RunSQL ("DELETE tblEditTbl.* FROM tblEditTbl")
uj5u.com熱心網友回復:
一個快速提示。您可以使用以下代碼來查看未保存資料的訊息。
Private Sub cmdClose_Click()
If Me.Dirty = True Then
MsgBox "Data is not saved. Save data first then try to close", vbExclamation
Exit Sub
Else
MsgBox "Data saved successfully."
DoCmd.Close
End If
End Sub
編輯:如果你想在更新之前檢查它,那么你必須使用一個變數來檢查資料是否被保存。在表單代碼模塊頂部宣告一個變數,如
Option Compare Database
Private blnSaveRecord As Boolean
使用下面的代碼Save按鈕。
Private Sub cmdSave_Click()
blnSaveRecord = True
DoCmd.RunCommand acCmdSaveRecord
blnSaveRecord = False
End Sub
最后將下面的代碼寫入Form_BeforeUpdate事件。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strMsg As String
If Not blnSaveRecord Then
Cancel = True
strMsg = "Please save the record.," & _
vbNewLine & "or press ESC from keyboard to cancel the operation."
MsgBox strMsg, vbInformation, "Save Record"
End If
End Sub
uj5u.com熱心網友回復:
我解決了我的問題。Harun24HR 讓我朝著正確的方向思考。除了我現有的代碼之外,我還需要使用 Form_Unload 事件并創建兩個公共布爾變數來檢查是否單擊了保存按鈕以及是否對表單進行了任何編輯。
Form_Unload
If Not SaveClicked And IsDirty Then
MsgBox "Data is not saved. Save data first and then try to close.", vbExclamation
Cancel = True
End If
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/388825.html
