PC Review


Reply
Thread Tools Rate Thread

Where would "DoCmd.Close..." go in switchboard's code?

 
 
Monte Grant
Guest
Posts: n/a
 
      15th Nov 2003
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



 
Reply With Quote
 
 
 
 
Ken Snell
Guest
Posts: n/a
 
      15th Nov 2003
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
>
>
>



 
Reply With Quote
 
 
 
 
Fredg
Guest
Posts: n/a
 
      15th Nov 2003
Monte Grant wrote:

> 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.


You did say "close the switchboard launching after 'ANY' form", not just
one or two....

Find the below Switchboard function and add the line
DoCmd.Close, acForm, Me.Name
where I've indicated it with ' ********* after it.

Private Function HandleButtonClick(intBtn As Integer)
' *** Snipped ***

Select Case rs![Command]

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

' Open a form.
Case conCmdOpenFormBrowse
DoCmd.OpenForm rs![Argument]
DoCmd.Close acForm, Me.Name ' ****************

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

' *** snipped ***


--
Fred
Please reply only to this newsgroup.
I do not reply to personal email.
 
Reply With Quote
 
Ken Snell
Guest
Posts: n/a
 
      15th Nov 2003
"Fredg" <(E-Mail Removed)> wrote in message
news:J7utb.263769$(E-Mail Removed)...
> You did say "close the switchboard launching after 'ANY' form", ....



Thanks, Fred....I have got to stop reading newsgroup posts before I have had
three cups of coffee! Missed that specific statement in the OP's post!

--
Ken Snell
<MS ACCESS MVP>


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
You would think microsoft would get it right!! Mark Van Rooijen Spyware Announcements 1 5th Mar 2005 07:03 PM
I would like to know how to enter the formula that would subtract. =?Utf-8?B?YmlsMzkx?= Microsoft Excel Worksheet Functions 3 30th Jan 2005 02:13 AM
A querry would not run in server but would run in local machine mario Microsoft Access Queries 1 2nd Mar 2004 12:13 PM
Do I need to override the OnClosing event when I'm closing a thread or would the Form_Closing event would work fine? Asheesh Microsoft Dot NET Compact Framework 2 6th Feb 2004 07:28 AM
I would like to make a macro that would look at the current email, and then put all recip in to a given contacts folder Phillips Microsoft Outlook VBA Programming 0 25th Nov 2003 05:51 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 07:34 PM.