ACC97: Can't Use PrtDevMode or PrtMip Property with MDE FilesID: Q180281
|
In an MDE file, you cannot use the PrtDevMode or PrtMip property to change printer information for forms and reports. If you try to modify printer information by programmatically using the PrtDevMode or PrtMip property, you may receive the following error message:
That command isn't available in an MDE database.
To modify printer information using the PrtDevMode or PrtMip property, the form or report must first be opened in Design view. However, forms, reports, and modules cannot be opened in Design mode within an MDE file.
Instead of creating MDE files, create a Microsoft Access database and add
Microsoft Access Security to the database. Adding security to your
Microsoft Access database (MDB) will prevent users from viewing the design
of your forms, reports, modules, and so on.
IMPORTANT: This resolution assumes that you understand the Microsoft Access
Security model.
If you use a Microsoft Access database that has been secured, you can use
the CreateWorkspace method to create a session for the Administrator of the
database while programmatically modifying printer information using
PrtDevMode or PrtMip property.
For more information on Microsoft Access Security, see the following
documentation:
Q148555 ACC95: MS Access 95 Security White Paper Available on MSL
Q132143 ACC: Overview of How to Secure a Microsoft Access DatabaseThe following example uses the default Admin user as the Administrator of the Northwind database, and allows user Guest to open a report, change its marginal settings, and then preview the report.
Option Explicit
Type str_PRTMIP
strRGB As String * 28
End Type
Type type_PRTMIP
lngLeftMargin As Long
lngTopMargin As Long
lngRightMargin As Long
lngBotMargin As Long
lngDataOnly As Long
lngWidth As Long
lngHeight As Long
lngDefaultSize As Long
lngColumns As Long
lngColumnSpacing As Long
lngRowSpacing As Long
lngItemLayout As Long
lngFastPrint As Long
lngDatasheet As Long
End Type
Private Sub Command0_Click()
' This example shows how to set report margins in a secured
' database.
Dim wrkAdmin As Workspace
Dim dbs As Database
Dim ctrReports As Container
Dim docReport As Document
Dim PrtMipString As str_PRTMIP
Dim PM As type_PRTMIP
Dim Rpt As Report
Dim strName As String
strName = "Summary of Sales by Year"
' Create a new session and assign it to the database administrator.
Set wrkAdmin = DBEngine.CreateWorkspace("AdminWorkspace", "Admin", _
"Admin", dbUseJet)
' Be sure to change the path in this next line to match your path to
' Northwind.mdb.
Set dbs = wrkAdmin.OpenDatabase("C:\Northwind.mdb", False)
Set ctrReports = dbs.Containers!Reports
Set docReport = ctrReports.Documents(strName)
' Give the Users group full permissions to this report.
docReport.UserName = "Users"
docReport.Permissions = dbSecFullAccess
' Close the session.
wrkAdmin.Close
' Open the report in Design view and set the report object variable.
DoCmd.Echo False
DoCmd.OpenReport strName, acDesign
Set Rpt = Reports(strName)
' Assign the reports current device information.
PrtMipString.strRGB = Rpt.PrtMip
' Assign the device information into its various components.
LSet PM = PrtMipString
' The new margin settings to be used are half inch.
' Note: The Summary of Sales by Year report has 1" margins by
' default.
PM.lngLeftMargin = 0.5 * 1440
PM.lngTopMargin = 0.5 * 1440
PM.lngRightMargin = 0.5 * 1440
PM.lngBotMargin = 0.5 * 1440
' Update the device information with the new settings.
LSet PrtMipString = PM
Rpt.PrtMip = PrtMipString.strRGB
' Close the design of the report, saving the changes,
' and then preview the report.
DoCmd.Close acReport, strName, acSaveYes
DoCmd.OpenReport strName, acViewPreview
DoCmd.Echo True
' Re-create a new session, assigning it to the database
' administrator.
Set wrkAdmin = DBEngine.CreateWorkspace("AdminWorkspace", "Admin", _
"Admin", dbUseJet)
' Be sure to enter the correct path in this next line as well.
Set dbs = wrkAdmin.OpenDatabase("C:\Northwind.mdb", False)
Set ctrReports = dbs.Containers!Reports
Set docReport = ctrReports.Documents(strName)
' Assign Read permissions for to this report back to the Users group.
docReport.UserName = "Users"
docReport.Permissions = dbSecReadSec
' Close the session.
wrkAdmin.Close
End Sub
- Open/Run on the Current Database
- Read Data and Read Design on the Order Details table
- Read Data and Read Design on the Orders table
- Read Data and Read Design on the Order Subtotals query
- Read Data and Read Design on the Summary of Sale by Year query
- Open/Run on the Form1 form
- Open/Run, Read Design and Modify Design on the "Summary of Sales by Year" report
This behavior is by design.
Printer page setup properties such as PrtDevMode and PrtMip enable you to
programmatically manipulate the printer information specified for Microsoft
Access forms and reports. The PrtDevMode and PrtMip properties enable you
to read a form or report's current printer settings as well as update the
printer settings.
Unlike run-time applications, which allow the PrtDevMode and PrtMip
properties to open forms and reports in Design view, MDE file formats do
not allow forms and reports to be opened in Design view.
Dim PrtMipString As str_PRTMIP
Dim PM As type_PRTMIP
Dim rpt As Report
Dim strName As String
DoCmd.Echo False
strName = "Summary of Sales by Year"
DoCmd.OpenReport strName, acDesign
Set rpt = Reports(strName)
PrtMipString.strRGB = rpt.PrtMip
LSet PM = PrtMipString
PM.lngLeftMargin = 1 * 1440
PM.lngTopMargin = 1 * 1440
PM.lngRightMargin = 1 * 1440
PM.lngBotMargin = 1 * 1440
LSet PrtMipString = PM
rpt.PrtMip = PrtMipString.strRGB
DoCmd.Close acReport, strName, acSaveYes
DoCmd.OpenReport strName, acViewPreview
DoCmd.Echo True
The expression On Click you entered as the event property setting
produced the following error: That command isn't available in an
MDE database.
The expression may not result in the name of a macro, the name of a
user-defined function, or [Event Procedure].
There may have been an error evaluating the function, event, or
macro.
For more information about the PrtDevMode or PrtMip property, search the
Help Index for "PrtDevMode Property" or "PrtMip Property", or ask the
Microsoft Access 97 Office Assistant.
For more information about getting help with Visual Basic for Applications,
please see the following article in the Microsoft Knowledge Base:
Q163435 VBA: Programming Resources for Visual Basic for Applications
Additional query words: kbcode kbmacro vba
Keywords : FmrProp PtrOpt
Version : WINDOWS:97
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: August 3, 1999