报表打印
在Access中使用自动化打印报告
2009-08-15 08:36:41

通过执行 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 = TrueOLEOpenReport_End:   Exit FunctionOLEOpenReport_Err:   MsgBox Error$(), vbInformation, "Automation"   Resume OLEOpenReport_EndEnd 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 BooleanOn Error GoTo OLEOpenReportRuntime_ErrDim x As LongDim 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 = acNormalIf IsMissing(strFilter) Then strFilter = ""If IsMissing(strWhere) Then strWhere = ""objAccess.DoCmd.OpenReport strRptName, intDisplay, strFilter, _strWhere' Close Microsoft Access session instance...objAccess.Quit acExitSet objAccess = NothingOLEOpenReportRuntime = TrueOLEOpenReportRuntime_End:Exit FunctionOLEOpenReportRuntime_Err:MsgBox Error$(), vbInformation, "Automation"Resume OLEOpenReportRuntime_EndEnd Function                                        要测试此函数,在立即的窗口中键入下面一行,,然后按 ENTER 键: ?OLEOpenReportRuntime("c:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb", "Invoice", strWhere:="OrderId = 10251")                                        函数打开罗斯文数据库,打开发票报表,将记录集设置为 orderId # 10251,然后打印到打印机报表。 注意: 请确保提供您的系统上文件的相应路径。