我不是一个VBA程序员,但我一直在使用以下代码提示用户退出表单之前是否保存更改。代码如下:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim ctl As Control
On Error GoTo Err_BeforeUpdate
If Me.Dirty Then
If MsgBox("Do you want to save?", vbYesNo + vbQuestion, _
"Save Record") = vbNo Then
Me.Undo
End If
End If
Exit_BeforeUpdate:
Exit Sub
Err_BeforeUpdate:
MsgBox Err.Number & " " & Err.Description
Resume Exit_BeforeUpdate
End Sub
每当我尝试将报告打印为PDF时,它总是提示用户是否保存。我希望上面的代码以这样一种方式编写,它总是提示用户是否保存记录,除非有人想要打印。
有人能帮忙修改这段代码吗?
提前感谢!
当您尝试打印一个"脏"的绑定表单时——这意味着它包含未保存的更改——Access会在打印前自动执行保存。
你面临的问题是,你的表单包含一个Form_BeforeUpdate
过程,它询问用户是否存储或丢弃未保存的更改,以及Access处理Form_BeforeUpdate
过程,在每次保存操作之前。
打印表单的VBA代码可以先执行保存本身,然后打印…
If Me.Dirty = True Then
Me.Dirty = False ' saves changes to current record
End If
' insert your print statement here
这种方法的一个可能的问题是,它会强制保存没有用户确认每次你想打印…这可能是不可接受的。
如果你的目标是允许用户打印一个包含未保存数据的表单,你可能不太幸运…假设它是一个绑定的表单。