Office中国论坛/Access中国论坛

标题: 下面代码判断报表是否已被打印(不管理是预览还是直接打印) [打印本页]

作者: tmtony    时间: 2008-11-24 10:29
标题: 下面代码判断报表是否已被打印(不管理是预览还是直接打印)
下面代码判断报表是否已被打印(不管理是预览还是直接打印)

1. 创建一个全局变量
Public intPrinted as Boolean
2. 在模块中创建下面两个函数

--------------------------------------------------------------------------------
Public Function PrintDialog()
On Error GoTo err_Proc
'Opens windows print dialog box
'If fails to print or cancelled then goes to error message and does not set intPrinted flag
     DoCmd.RunCommand acCmdPrint
     intPrinted = True
     'Enable following line if you want report to close immediately after printing
'     DoCmd.Close acReport, Screen.ActiveReport.Name   
exit_Proc:
    Exit Function
err_Proc:
    Resume exit_Proc
End Function

Public Function PrintReport(stDocName as String, stLinkCriteria as string, intPreview as Integer)
On Error GoTo err_proc
   'stDocName = Name of report
   'stLinkCriteria = filter criteria
   'intPreview = 0 print directly to printer _
                     = 2 print preview
    'Clear printed flag
    intPrinted = False
    'Open report
    DoCmd.OpenReport stDocName , intPreview, , stLinkCriteria   
    if intPreview = 0 then
        intPrinted = True
        Debug.Print "Printed Successfully"   
    End if
exit_proc:
    Exit Function
err_proc:
    Debug.Print "Print Failed"   
    Resume exit_procEnd Function
End Function
--------------------------------------------------------------------------------

3. 在打印预览工具栏上创建新的打印按钮
   或修改现有的打印按钮
a. 将打印及打印预览按钮的 动作改为  '=PrintDialog()'

4. 在报表的关闭事件中 On_Close 添加如下代码
--------------------------------------------------------------------------------
     If intPrinted = True Then
         'Run code for when report was printed successfully
     End If
--------------------------------------------------------------------------------

5. 在窗体上要打印或预览报表时使用如下代码
--------------------------------------------------------------------------------
    PrintReport "ReportName",  "Criteria", intPreview
    'Check if report was printed
    '- The following lines of code are only needed if the report is printed directly (ie not previewed)
    ' if the intpreview is always set to 2  then the following lines can be deleted
    If intPreview = 0 then
        If intPrinted = True then
            'Run code for when report was printed successfully
        Else
            'Run code for when report was just previewed OR the print failed
        End If
    End If
--------------------------------------------------------------------------------

intPreview = 0 to print directly
intPreview = 2 to preview the report
Edited as requested by Bernie
Edited by: VanThienDinh on Tue Jul 29 6:23:49 EDT 2008.
翻译 : tmtony
作者: t小宝    时间: 2008-11-24 11:16
坐个沙发
谢谢[:18]
作者: Grant    时间: 2008-11-24 11:49
板凳,学习了
作者: changweiren    时间: 2009-2-3 23:20
谢谢,向领导学习是必须的!
作者: lxing20    时间: 2009-4-9 12:19
谢谢你分享!
作者: fengxueysh    时间: 2009-4-10 19:41
以后再学
作者: szblueidea    时间: 2009-4-29 04:41
thank you ,good luck to u !
作者: chenyingfengsx    时间: 2009-7-9 15:49
好好学习,认真学习下!
作者: chaojianan    时间: 2009-10-7 03:28
谢谢分享,学习。
作者: yihesmxx    时间: 2010-7-24 12:08
学习学习
作者: lxing20    时间: 2011-5-10 23:40
学习
作者: jinzhanxi    时间: 2011-8-29 09:08
谢谢分享
作者: bpchan    时间: 2011-11-26 15:29
学习!!
作者: huxinhua    时间: 2012-1-10 17:52
谢谢分享!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3