2014-05-07 71 views
0

我在Access中有一个自定义表格和报告,我的表单上有一个“打印报告”按钮,它为数据库提供当前记录并打印出为其创建的报告。我的问题是我在报告上做了一个快速打印的代码。一旦我按下我创建的“打印报告”按钮,它会弹出打印预览,但会自动打印报告。我希望能够在报告打印之前查看预览,打开打印对话框并能够选择要使用的打印机,而不是快速打印并使用默认打印机。我的代码在当前格式下面,我不确定在哪里或如何进行此调整。在此先感谢您的帮助!访问打印定制表格打印的报告选项

Private Sub cmdPrintReport_Click() 
    Dim strReportName As String 
    Dim strCriteria As String 

    strReportName = "rptDrillReclamation" 
    strCriteria = "[HoleNumber]='" & Me![HoleNumber] & "'" 
    DoCmd.OpenReport strReportName, acViewPreview, , strCriteria 

On Error GoTo Err_cmdPrintReport_Click 

    Dim stDocName As String 

    stDocName = "rptDrillReclamation" 
    DoCmd.OpenReport stDocName, acNormal 

Exit_cmdPrintReport_Click: 
    Exit Sub 

Err_cmdPrintReport_Click: 
    MsgBox Err.Description 
    Resume Exit_cmdPrintReport_Click 

End Sub 
+0

这是与按钮的Click事件关联的所有代码吗?我正在寻找一个DoCmd.PrintOut,但我没有看到它。这告诉我必须有其他事情参与其中。 –

+0

@newbie是的,这是所有与它相关的代码。我相信Exit_cmdPrintReport_click是执行打印的内容。 –

+0

'Exit_cmdPrintReport_Click'是一个标签,就像一个线标记,用于在使用GoTo语句时告诉代码在哪里执行。它本身没有任何作用。 – Brad

回答

0

您正在打开报告两次!两行代码以DoCmd.OpenReport开头。

第一次将View参数设置为acViewPreview,因此它在屏幕上显示(=预览)而不打印。第二次View参数设置为acNormal(=无预览),因此它直接打印到打印机而不显示在屏幕上。

顺便说一句你打印所有记录的第二次,因为没有发送标准!

删除第二个Docmd.OpenReport...。这是不必要的,是什么导致你的问题。

+0

感谢您的意见,您绝对正确。我删除了第二个Docmd.OpenReport并像魅力一样工作。我知道我忽略了一些简单的东西......我让代码稍微复杂一些,而不是必要的。再次感谢! –