在Access中使用自动化打印报告
通过执行 DoCmd 对象的该 OpenReport 方法,可以从任何自动化客户端应用程序,如 Microsoft Visual Basic 或 Microsoft Visual Basic Environment (VBE) 来打印 Access 报表。 这使您以实现 Access 作为应用程序解决方案中报告的组件。 Microsoft 提供仅,用于说明的编程示例不附带任何明示或默示的保证。 这包括,但不限于适销性或针对特定用途的适用性的默示保证。 本文假定您熟悉所演示的编程语言和用于创建和调试过程的该工具。 Microsoft 支持工程师可以帮助解释某个特定的过程的功能,但是它们不会修改这些示例以提供额外的功能或构建过程以满足您的特殊需求。 警告 : 如果您按照此示例,则修改示例数据库 Northwind.mdb。 可以备份 Northwind.mdb 文件,并在数据库的副本上执行这些步骤。
打开 Microsoft Access。
创建新的空白数据库。
创建模块,然后声明部分中键入以下:
Option Explicit
' In other applications like Microsoft Visual Basic,
' you can include a reference to Microsoft Access to
' gain the use of Access constants. or, use the following
' constant values...
' Global Const acNormal = 0
' Global Const acDesign = 1
' Global Const acPreview = 2
' -----------------------------------------------------
' Application Quit options...
' saves all objects without displaying a dialog box:
' Global Const acSaveYes = 0
' displays a dialog box that asks whether you want to save any
' database objects that have been changed but not saved:
' Global Const acPrompt = 1
' quits Microsoft Access without saving any objects:
' Global Const acExit = 2
键入下面的过程:
Function OLEOpenReport(strDBName As String, _
strRptName As String, _
Optional ByVal intDisplay As Variant, _
Optional ByVal strFilter As Variant, _
Optional ByVal strWhere As Variant) As Boolean
On Error GoTo OLEOpenReport_Err
' Create Automation object.
Dim objAccess As Object
Set objAccess = CreateObject("Access.Application")
' Open the supplied database.
' Optional parameter at the end of statement
' indicates exclusive mode if set to True...
objAccess.OpenCurrentDatabase strDBName, False
' The OpenReport method uses the following arguments...
' Report Name - Name of the report object.
' View - Display in Print Preview or send to printer.
' acNormal - Print report
' acDesign - open report in design (n/a in runtime)
' acPreview - open in preview window
' Filter Name - Name of a saved filter query.
' Where Condition = valid SQL where condition.
If IsMissing(intDisplay) Then intDisplay = acNormal
If IsMissing(strFilter) Then strFilter = ""
If IsMissing(strWhere) Then strWhere = ""
objAccess.DoCmd.OpenReport strRptName, intDisplay, strFilter, _
strWhere
' Close Microsoft Access session instance...
objAccess.Quit acExit
Set objAccess = Nothing
OLEOpenReport = True
OLEOpenReport_End:
Exit Function
OLEOpenReport_Err:
MsgBox Error$(), vbInformation, "Automation"
Resume OLEOpenReport_End
End Function
要测试此函数,在立即的窗口中键入下面一行,,然后按 ENTER 键:
?OLEOpenReport("c:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb", "Invoice", strWhere:="OrderId = 10251")
函数打开罗斯文数据库,打开发票报表,将记录集设置为 orderId # 10251,然后打印到打印机报表。
注意: 请确保提供您的系统上文件的相应路径。
在运行版本的 Access 只支持自动化 GetObject () 函数。
打开 Microsoft Access。
创建新的数据库。
创建模块,然后声明部分中键入以下:
Option Explicit
' In other applications like Microsoft Visual Basic,
' you can include a reference to Microsoft Access to
' gain the use of Microsoft Access constants. or, use the following
' constant values...
' Global Const acNormal = 0
' Global Const acDesign = 1
' Global Const acPreview = 2
' -----------------------------------------------------
' Application Quit options...
' saves all objects without displaying a dialog box:
' Global Const acSaveYes = 0
' displays a dialog box that asks whether you want to save any
' database objects that have been changed but not saved:
' Global Const acPrompt = 1
' quits Microsoft Access without saving any objects:
' Global Const acExit = 2
键入下面的过程:
Function OLEOpenReportRuntime(strDBName As String, _
strRptName As String, _
Optional ByVal intDisplay As Variant, _
Optional ByVal strFilter As Variant, _
Optional ByVal strWhere As Variant _
) As Boolean
On Error GoTo OLEOpenReportRuntime_Err
Dim x As Long
Dim objAccess As Object
' Open the run-time instance and database...
' ------------------------------------------
' The use of the Chr$(34) function supplies
' quotation marks around the database name which is
' required by Shell when the optional command
' line parameter contains spaces...
x = Shell("c:\myapp\Office\msaccess.exe " &_
Chr$(34) & strDBName & Chr$(34) & _
"/Runtime /Wrkgrp " & Chr$(34) & _
"c:\myapp\system.mdw" & Chr$(34))
Set objAccess = GetObject(strDBName)
' The OpenReport method uses the following arguments...
' Report Name - Name of the report object.
' View - Display in Print Preview or send to printer.
' acNormal - Print report
' acDesign - open report in design (n/a in runtime)
' acPreview - open in preview window
' Filter Name - Name of a saved filter query.
' Where Condition = valid SQL where condition.
If IsMissing(intDisplay) Then intDisplay = acNormal
If IsMissing(strFilter) Then strFilter = ""
If IsMissing(strWhere) Then strWhere = ""
objAccess.DoCmd.OpenReport strRptName, intDisplay, strFilter, _
strWhere
' Close Microsoft Access session instance...
objAccess.Quit acExit
Set objAccess = Nothing
OLEOpenReportRuntime = True
OLEOpenReportRuntime_End:
Exit Function
OLEOpenReportRuntime_Err:
MsgBox Error$(), vbInformation, "Automation"
Resume OLEOpenReportRuntime_End
End Function
要测试此函数,在立即的窗口中键入下面一行,,然后按 ENTER 键:
?OLEOpenReportRuntime("c:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb", "Invoice", strWhere:="OrderId = 10251")
函数打开罗斯文数据库,打开发票报表,将记录集设置为 orderId # 10251,然后打印到打印机报表。
注意: 请确保提供您的系统上文件的相应路径。
(责任编辑:admin)
- ·解决Access在页面设置中设置边距无法保
- ·Access通用报表打印设置
- ·在Access中使用自动化打印报告
- ·报表奇偶分页打印
- ·access输出资料到word用于打印
- ·支票打印的日期大写问题Access2007
- ·[报表]报表跨节垂直居中例子
- ·ACCESS-VBA编程 第八章 报表
- ·用Access2007解决支票打印的日期大写问
- ·自由设置页码打印报表
- ·ACCESS和EXECL结合的简单说明
- ·每页打印一定行数后自动分页(报表分页
- ·在VB中用代码打印ACCESS报表
- ·[原创]在 Access 2000中变通实现弹出式
- ·在Access 2002中打印报表的关系图
- ·Access轻松实现多数据批量打印