1

我不是一个 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 时,它总是提示用户是否保存。我希望上面的代码以这样一种方式编写,它总是提示用户是否保存记录,除非有人想要打印。

有人可以帮助修改此代码吗?

提前致谢!

4

1 回答 1

2

当您尝试打印“脏”的绑定表单时——意味着它包含未保存的更改——Access 会在打印前自动执行保存。

您面临的问题是您的表单包含一个Form_BeforeUpdate过程,该过程询问用户是存储还是丢弃未保存的更改,并且 AccessForm_BeforeUpdate在每次保存操作之前立即处理该过程。

您打印表单的 VBA 代码可以首先执行保存,然后打印...

If Me.Dirty = True Then
    Me.Dirty = False ' saves changes to current record
End If
' insert your print statement here

这种方法的一个可能问题是,每次您想要打印时,它都会在没有用户确认的情况下强制保存……这可能是不可接受的。

如果您的目标是还允许用户打印包含未保存数据的表单,那么您可能不走运……假设它是绑定表单。

于 2013-05-17T16:18:20.237 回答