方法2:
其实用 Current 事件也能实现,只不过要麻烦一点.作者: 懒UFO 时间: 2003-2-13 07:20
谢谢 Roadbeg!作者: 懒UFO 时间: 2003-2-14 00:09
这段代码有错吗?如果用记录浏览按钮转到下一条记录,哪怕是单击的“否”也会保存。不信各位试试!
Private Sub Form_BeforeUpdate(Cancel As Integer)
If bleSave = False Then
If Me.Dirty = True Then
If MsgBox("本记录已更改,是否需要保存?", 4) = 7 Then
SendKeys "{esc}", True
End If
End If
Else
bleSave = False
End If
Private Sub 保存_Click()
bleSave = True
DoCmd.RunCommand acCmdSaveRecord
End Sub 作者: Roadbeg 时间: 2003-2-14 00:14
反 sendkeys 改为 窗体的 undo 方法
或置 参数 cancel=-1作者: 懒UFO 时间: 2003-2-14 00:19
小生愚笨。Roadbeg可以清楚一点吗?作者: Roadbeg 时间: 2003-2-14 00:21
改为
Private Sub Form_BeforeUpdate(Cancel As Integer)
If bleSave = False Then
If Me.Dirty = True Then
If MsgBox("本记录已更改,是否需要保存?", 4) = 7 Then
form.undo
End If
End If
Else
bleSave = False
End If
Private Sub 保存_Click()
bleSave = True
DoCmd.RunCommand acCmdSaveRecord
End Sub
作者: 懒UFO 时间: 2003-2-14 00:31
我试试!Thank you!作者: 懒UFO 时间: 2003-2-14 00:34
我试试!Thank you!作者: Roadbeg 时间: 2003-2-14 00:43
其实用 sendkeys 也可以,但有一个焦点问题,即你的 esc 是发送给谁
如果在 sendkeys 之前 加上一句
控件.setforce 就可以了
控件必须是与记录相关的 (绑定控件)作者: zhengjialon 时间: 2003-2-15 00:08
) Use the form's BeforeUpdate event to run code each time Access tries to save a record. This way, if the user doesn't want to save a record, you can issue an Undo command instead of saving the record.
Note: This will generate a Message Box asking for confirmation each time a changed record is saved. I leave it on whoever is going to follow this method to determine how to refine this per user preference. (Hint: Try a Checkbox.)
'****************** Code Start ******************
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strMsg As String
strMsg = "Data has changed."
strMsg = strMsg & "@Do you wish to save the changes?"
strMsg = strMsg & "@Click Yes to Save or No to Discard changes."
If MsgBox(strMsg, vbQuestion + vbYesNo, "Save Record?") = vbYes Then
'do nothing
Else
DoCmd.RunCommand acCmdUndo