It would need to be inserted into code in each of the "sub-procedures" under
the Select Case in the HandleButtonClick function as the last step for each
case. However, for some of the cases (such as the one for previewing a
report), the close form command won't run until the report has been printed
or closed, and then of course you probably don't want the switchboard form
to close.
So, you need to identify which switchboard actions should also close the
switchboard, and then insert the
DoCmd.Close acForm, Me.Name
step as the last step in the different Case sections for thost actions.
--
Ken Snell
<MS ACCESS MVP>
"Monte Grant" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> I want the switchboard to close after launching any form. Where is the
> switchboard's code would I put the command to automatically close the
> switchboard?
>
>
> Below is the code generated by the manager.
>
>
>
>
>
>
> Option Compare Database
>
> 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 "Please choose Collections or Receive Payments forms.",
> vbCritical
> Resume HandleButtonClick_Exit
> End If
>
> End Function
>
>
>
|