How to change the form the switchboard launches ?

  • Thread starter Thread starter Steve
  • Start date Start date
S

Steve

Hi,
How can I make the button on the switchboard launch a different form to the
one it currently launches ?
I designed the original switchboard many years ago but haven't a clue now
how I did it !
Steve
 
Hi Steve

Open your form in design view (the form with the button on it)
Right click the button and open the properties box
In the event column you will see either Macro# or [Event Procedure]

If you see Macro the right click and select build and change the name fo the
form being opened (at the base of the marco page)

If you see [Event Procedure]
Right click select build (...)

You will see something like this (if the button was created by a wizard)

Private Sub ButtonName_Click()
On Error GoTo Err_ButtonName_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "FormBeingOpened"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_ButtonName_Click:
Exit Sub

Err_ButtonNameClick:
MsgBox Err.Description
Resume Exit_ButtonName_Click

End Sub

In this case just change the line
stDocName = "FormBeingOpened"
to show the new name of the form you want to open like this
stDocName = "NewFormNameGoesHere"


However normally most people will not put in error handeling and so (on
right click of the botton) you may just see this

Private Sub ButtonName_Click()
DoCmd.OpenForm "FormBeingOpened", acNormal, "", "", , acNormal
End Sub

In this case you need to alter the code in the middle like this

Private Sub ButtonName_Click()
DoCmd.OpenForm "NewFormNameGoesHere", acNormal, "", "", , acNormal
End Sub

I have assumed that the form you are opening has not been filter on open if
it has post back with details of what you need from the filter

Good luck
 
Hi,
If I open the main Switchboard in design view, and r/click on the button, I
see =HandleButtonClick(1) against onClick, nothing else.

If I right click on the top left corner of mainSwitchboard in Design View
and choose properties, I see in event tab, On Current [EventProcedure] and
also On Open [EventProcedure]

Right clicking on the word [eventProcedure] beside On Current gives this:-
Option Compare Database
Option Explicit

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 dbs As Database
Dim rst As Recordset
Dim strSQL 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 dbs = CurrentDb()
strSQL = "SELECT * FROM [Switchboard Items]"
strSQL = strSQL & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" &
Me![SwitchboardID]
strSQL = strSQL & " ORDER BY [ItemNumber];"
Set rst = dbs.OpenRecordset(strSQL)

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

' Close the recordset and the database.
rst.Close
dbs.Close

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

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

Dim dbs As Database
Dim rst As Recordset

On Error GoTo HandleButtonClick_Err

' Find the item in the Switchboard Items table
' that corresponds to the button that was clicked.
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Switchboard Items", dbOpenDynaset)
rst.FindFirst "[SwitchboardID]=" & Me![SwitchboardID] & " AND
[ItemNumber]=" & intBtn

' If no item matches, report the error and exit the function.
If (rst.NoMatch) Then
MsgBox "There was an error reading the Switchboard Items table."
rst.Close
dbs.Close
Exit Function
End If

Select Case rst![Command]

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

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

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

' Open a report.
Case conCmdOpenReport
DoCmd.OpenReport rst![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 "WZMAIN80.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 rst![Argument]

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

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

End Select

' Close the recordset and the database.
rst.Close
dbs.Close

HandleButtonClick_Exit:
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



at this point I cant relate it to your text..

Seems rather long winded just to open a form !

over to you :-)

Steve

Wayne-I-M said:
Hi Steve

Open your form in design view (the form with the button on it)
Right click the button and open the properties box
In the event column you will see either Macro# or [Event Procedure]

If you see Macro the right click and select build and change the name fo
the
form being opened (at the base of the marco page)

If you see [Event Procedure]
Right click select build (...)

You will see something like this (if the button was created by a wizard)

Private Sub ButtonName_Click()
On Error GoTo Err_ButtonName_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "FormBeingOpened"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_ButtonName_Click:
Exit Sub

Err_ButtonNameClick:
MsgBox Err.Description
Resume Exit_ButtonName_Click

End Sub

In this case just change the line
stDocName = "FormBeingOpened"
to show the new name of the form you want to open like this
stDocName = "NewFormNameGoesHere"


However normally most people will not put in error handeling and so (on
right click of the botton) you may just see this

Private Sub ButtonName_Click()
DoCmd.OpenForm "FormBeingOpened", acNormal, "", "", , acNormal
End Sub

In this case you need to alter the code in the middle like this

Private Sub ButtonName_Click()
DoCmd.OpenForm "NewFormNameGoesHere", acNormal, "", "", , acNormal
End Sub

I have assumed that the form you are opening has not been filter on open
if
it has post back with details of what you need from the filter

Good luck



--
Wayne
Manchester, England.



Steve said:
Hi,
How can I make the button on the switchboard launch a different form to
the
one it currently launches ?
I designed the original switchboard many years ago but haven't a clue now
how I did it !
Steve
 
Steve

The Access switchboard is an overblown, overcomplicated way to perform
what is actually a very simple task. That's why it has all that excess code.

Having said that, if you go to Database Tools / Switchboard Manager, then
select different menus and click on Edit, you will eventually find the option
that opens the form you are referring to. You can then select a new form
for it to open.
--
_________

Sean Bailey


Steve said:
Hi,
If I open the main Switchboard in design view, and r/click on the button, I
see =HandleButtonClick(1) against onClick, nothing else.

If I right click on the top left corner of mainSwitchboard in Design View
and choose properties, I see in event tab, On Current [EventProcedure] and
also On Open [EventProcedure]

Right clicking on the word [eventProcedure] beside On Current gives this:-
Option Compare Database
Option Explicit

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 dbs As Database
Dim rst As Recordset
Dim strSQL 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 dbs = CurrentDb()
strSQL = "SELECT * FROM [Switchboard Items]"
strSQL = strSQL & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" &
Me![SwitchboardID]
strSQL = strSQL & " ORDER BY [ItemNumber];"
Set rst = dbs.OpenRecordset(strSQL)

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

' Close the recordset and the database.
rst.Close
dbs.Close

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

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

Dim dbs As Database
Dim rst As Recordset

On Error GoTo HandleButtonClick_Err

' Find the item in the Switchboard Items table
' that corresponds to the button that was clicked.
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Switchboard Items", dbOpenDynaset)
rst.FindFirst "[SwitchboardID]=" & Me![SwitchboardID] & " AND
[ItemNumber]=" & intBtn

' If no item matches, report the error and exit the function.
If (rst.NoMatch) Then
MsgBox "There was an error reading the Switchboard Items table."
rst.Close
dbs.Close
Exit Function
End If

Select Case rst![Command]

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

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

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

' Open a report.
Case conCmdOpenReport
DoCmd.OpenReport rst![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 "WZMAIN80.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 rst![Argument]

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

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

End Select

' Close the recordset and the database.
rst.Close
dbs.Close

HandleButtonClick_Exit:
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



at this point I cant relate it to your text..

Seems rather long winded just to open a form !

over to you :-)

Steve

Wayne-I-M said:
Hi Steve

Open your form in design view (the form with the button on it)
Right click the button and open the properties box
In the event column you will see either Macro# or [Event Procedure]

If you see Macro the right click and select build and change the name fo
the
form being opened (at the base of the marco page)

If you see [Event Procedure]
Right click select build (...)

You will see something like this (if the button was created by a wizard)

Private Sub ButtonName_Click()
On Error GoTo Err_ButtonName_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "FormBeingOpened"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_ButtonName_Click:
Exit Sub

Err_ButtonNameClick:
MsgBox Err.Description
Resume Exit_ButtonName_Click

End Sub

In this case just change the line
stDocName = "FormBeingOpened"
to show the new name of the form you want to open like this
stDocName = "NewFormNameGoesHere"


However normally most people will not put in error handeling and so (on
right click of the botton) you may just see this

Private Sub ButtonName_Click()
DoCmd.OpenForm "FormBeingOpened", acNormal, "", "", , acNormal
End Sub

In this case you need to alter the code in the middle like this

Private Sub ButtonName_Click()
DoCmd.OpenForm "NewFormNameGoesHere", acNormal, "", "", , acNormal
End Sub

I have assumed that the form you are opening has not been filter on open
if
it has post back with details of what you need from the filter

Good luck



--
Wayne
Manchester, England.



Steve said:
Hi,
How can I make the button on the switchboard launch a different form to
the
one it currently launches ?
I designed the original switchboard many years ago but haven't a clue now
how I did it !
Steve
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top