Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

?Switchboard screen prints while trying to print an Access 2002 report

Status
Not open for further replies.

parias

Technical User
Mar 8, 2005
5
0
0
US


I created a macro to print a report using a switchboard command button, the report prints followed by a print of the swtichboard screen. I can not seem to find a way to stop it. I recreated the macro, the switchboard and converted the macro to VBA to find the error but can not find it. Below is the script for the macro. Does anyone have a solution?


Option Compare Database

'------------------------------------------------------------
' Print_NHP_List_Print_NHP_List
'
'------------------------------------------------------------
Function Print_NHP_List_Print_NHP_List()
On Error GoTo Print_NHP_List_Print_NHP_List_Err

DoCmd.OpenReport "NHP Report", acViewNormal, "", "", acHidden
DoCmd.PrintOut acSelection, , acHigh, 1, True
DoCmd.Close acMacro, "Print NHP List"


Print_NHP_List_Print_NHP_List_Exit:
Exit Function

Print_NHP_List_Print_NHP_List_Err:
MsgBox Error$
Resume Print_NHP_List_Print_NHP_List_Exit

End Function


 
I think you're gonna have to get rid of the acHidden. The only way to print a report (to the best of my knowledge) is having it displayed on the screen. The best you can do is:
Code:
DoCmd.OpenReport "NHP Report", acViewNormal
DoCmd.PrintOut acSelection, , acHigh, 1, True
DoCmd.Close acReport, "NHP Report"
DoCmd.Close acMacro, "Print NHP List"


-------------------------
Just call me Captain Awesome.
 
Thanks for the try but it continues to print the switchboard screen
 
Do you really need to use the acSelection constant? Try leaving this criteria blank, which will then select the whole report by default.

I've never had this happen, but I suspect that acSelection is selecting the switchboard.

HTH
Lightning
 
Thanks for the reply. I tried it nut it continues to print the switchboard. I modifed the macro code to and it now looks like the following but it stil prints the report followed by the switchboard.


Print_NHP_List
'
'------------------------------------------------------------
Function Print_NHP_List()
On Error GoTo Print_NHP_List_Err

DoCmd.OpenReport "NHP Report",
DoCmd.PrintOut
DoCmd.Close acMacro, "Print NHP List"


Print_NHP_List_Exit:
Exit Function

Print_NHP_List_Err:
MsgBox Error$
Resume Print_NHP_List_Exit

End Function
,
 
Try this:
Code:
Function Print_NHP_List()
On Error GoTo Print_NHP_List_Err
    DoCmd.OpenReport "NHP Report",acViewNormal

Print_NHP_List_Exit:
    Exit Function

Print_NHP_List_Err:
    MsgBox Error$
    Resume Print_NHP_List_Exit

End Function

This should print the report directly to the printer without printing the switchboard.

HTH
Lightning
 
Thanks Lightning,

But as before the switchboard continues to print. The following is the code for the switchboard.



Private Sub Form_Open(Cancel As Integer)
' Minimize the database window and initialize the form.

' Move to the switchboard page that is marked as the default.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' "
Me.FilterOn = True

End Sub

Private Sub Form_Current()
' Update the caption and fill in the list of options.

Me.Caption = Nz(Me![ItemText], "")
FillOptions

End Sub

Private Sub FillOptions()
' Fill in the options for this switchboard page.

' The number of buttons on the form.
Const conNumButtons = 8

Dim con As Object
Dim rs As Object
Dim stSql As String
Dim intOption As Integer

' Set the focus to the first button on the form,
' and then hide all of the buttons on the form
' but the first. You can't hide the field with the focus.
Me![Option1].SetFocus
For intOption = 2 To conNumButtons
Me("Option" & intOption).Visible = False
Me("OptionLabel" & intOption).Visible = False
Next intOption

' Open the table of Switchboard Items, and find
' the first item for this Switchboard Page.
Set con = Application.CurrentProject.Connection
stSql = "SELECT * FROM [Switchboard Items]"
stSql = stSql & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
stSql = stSql & " ORDER BY [ItemNumber];"
Set rs = CreateObject("ADODB.Recordset")
rs.Open stSql, con, 1 ' 1 = adOpenKeyset

' If there are no options for this Switchboard Page,
' display a message. Otherwise, fill the page with the items.
If (rs.EOF) Then
Me![OptionLabel1].Caption = "There are no items for this switchboard page"
Else
While (Not (rs.EOF))
Me("Option" & rs![ItemNumber]).Visible = True
Me("OptionLabel" & rs![ItemNumber]).Visible = True
Me("OptionLabel" & rs![ItemNumber]).Caption = rs![ItemText]
rs.MoveNext
Wend
End If

' Close the recordset and the database.
rs.Close
Set rs = Nothing
Set con = Nothing

End Sub

Private Function HandleButtonClick(intBtn As Integer)
' This function is called when a button is clicked.
' intBtn indicates which button was clicked.

' Constants for the commands that can be executed.
Const conCmdGotoSwitchboard = 1
Const conCmdOpenFormAdd = 2
Const conCmdOpenFormBrowse = 3
Const conCmdOpenReport = 4
Const conCmdCustomizeSwitchboard = 5
Const conCmdExitApplication = 6
Const conCmdRunMacro = 7
Const conCmdRunCode = 8
Const conCmdOpenPage = 9

' An error that is special cased.
Const conErrDoCmdCancelled = 2501

Dim con As Object
Dim rs As Object
Dim stSql As String

On Error GoTo HandleButtonClick_Err

' Find the item in the Switchboard Items table
' that corresponds to the button that was clicked.
Set con = Application.CurrentProject.Connection
Set rs = CreateObject("ADODB.Recordset")
stSql = "SELECT * FROM [Switchboard Items] "
stSql = stSql & "WHERE [SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn
rs.Open stSql, con, 1 ' 1 = adOpenKeyset

' If no item matches, report the error and exit the function.
If (rs.EOF) Then
MsgBox "There was an error reading the Switchboard Items table."
rs.Close
Set rs = Nothing
Set con = Nothing
Exit Function
End If

Select Case rs![Command]

' Go to another switchboard.
Case conCmdGotoSwitchboard
Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rs![Argument]

' Open a form in Add mode.
Case conCmdOpenFormAdd
DoCmd.OpenForm rs![Argument], , , , acAdd

' Open a form.
Case conCmdOpenFormBrowse
DoCmd.OpenForm rs![Argument]

' Open a report.
Case conCmdOpenReport
DoCmd.OpenReport rs![Argument], acPreview

' Customize the Switchboard.
Case conCmdCustomizeSwitchboard
' Handle the case where the Switchboard Manager
' is not installed (e.g. Minimal Install).
On Error Resume Next
Application.Run "ACWZMAIN.sbm_Entry"
If (Err <> 0) Then MsgBox "Command not available."
On Error GoTo 0
' Update the form.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' "
Me.Caption = Nz(Me![ItemText], "")
FillOptions

' Exit the application.
Case conCmdExitApplication
CloseCurrentDatabase
' Run a macro.
Case conCmdRunMacro
DoCmd.RunMacro rs![Argument]

' Run code.
Case conCmdRunCode
Application.Run rs![Argument]


' Open a Data Access Page
Case conCmdOpenPage
DoCmd.OpenDataAccessPage rs![Argument]

' Any other command is unrecognized.
Case Else
MsgBox "Unknown option."

End Select

' Close the recordset and the database.
rs.Close

HandleButtonClick_Exit:
On Error Resume Next
Set rs = Nothing
Set con = Nothing
Exit Function

HandleButtonClick_Err:
' If the action was cancelled by the user for
' some reason, don't display an error message.
' Instead, resume on the next line.
If (Err = conErrDoCmdCancelled) Then
Resume Next
Else
MsgBox "There was an error executing the command.", vbCritical
Resume HandleButtonClick_Exit
End If

End Function

inues to print.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top