Switchitems do not display in datasheet mode

  • Thread starter Thread starter Annelie
  • Start date Start date
A

Annelie

When I create a form and set it to datasheet view, opening the form always
shows the datasheet view.
But when the form is opened using the switchboard, it always opens in forms
view, even the defaults are set to Datasheet only
Can that be changed?
 
When you open a form from any other form it will always open in form view,
unless you specifically open it using:
DoCmd.OpenForm "FormName", acFormDS

If this is a user made switchboard, just add ,acFormDS to the code.

If this is the Access switchboard made using the built-in switchboard
manager, you'll have to go into the code window, find 'Function
HandleButtonClick',
Dim a new constant
Const conCmdOpenFormDS = 10 ' or whatever your next higher number is
and then add some code in the Select Case statement
to tell the function to open the form acFormDS:

Case conCmdOpenFormDS
DoCmd.OpenForm rst![Argument]

Then change the Command value in the switchboard table to that new constant
number.

If you wish to make it even easier, code a Public Module
DoCmd.OpenForm "FormName",acFormDS

Then change the switchboard to RunCode and give it this Sub's Name.

Have fun.
 
Thank for the instructions, but I can't follow where I am supposed to do all
this. It is an Access Switchboard, where do I go to the code window?

Fredg said:
When you open a form from any other form it will always open in form view,
unless you specifically open it using:
DoCmd.OpenForm "FormName", acFormDS

If this is a user made switchboard, just add ,acFormDS to the code.

If this is the Access switchboard made using the built-in switchboard
manager, you'll have to go into the code window, find 'Function
HandleButtonClick',
Dim a new constant
Const conCmdOpenFormDS = 10 ' or whatever your next higher number is
and then add some code in the Select Case statement
to tell the function to open the form acFormDS:

Case conCmdOpenFormDS
DoCmd.OpenForm rst![Argument]

Then change the Command value in the switchboard table to that new constant
number.

If you wish to make it even easier, code a Public Module
DoCmd.OpenForm "FormName",acFormDS

Then change the switchboard to RunCode and give it this Sub's Name.

Have fun.

--
Fred

Please reply only to this newsgroup.
I do not reply to personal e-mail.


Annelie said:
When I create a form and set it to datasheet view, opening the form always
shows the datasheet view.
But when the form is opened using the switchboard, it always opens in forms
view, even the defaults are set to Datasheet only
Can that be changed?
 
Open the switchboard form in design view.
Right click on the tiny square where the top and left side rulers meet.
Select Properties.
Click on the Events tab.
Click in any of the events that has the words [Event Procedure].
Click on the button with the 3 dots that will appear.

This will open the form's code window.
Scroll down until you find the function name I gave you.
If you examine the code you will see existing constants and further down,
the Select Case statement.
Add the constant up where the other constants are.
If the highest value of the constants is 8, make this new one 9, etc.

After you add the constant to the code sheet, scroll down to the Select Case
statement.

I just saw I neglected to add the words acFormDS to my previous post,
so add this statement:

Case conCmdOpenFormDS
DoCmd.OpenForm rst!Argument, acFormDS

Just before the Case Else statement in the code window.


Exit the code window by clicking on the top left corner X.

close and save the form.

Open the Table Switchboard Items.
Find the form name you want to open.
Change the existing Command number value to the new one.
Save the change.
Open the switchboard.
Click the command button.
The form should now open in DataSheet View.

Good Luck.
--
Fred

Please reply only to this newsgroup.
I do not reply to personal e-mail.


Annelie said:
Thank for the instructions, but I can't follow where I am supposed to do all
this. It is an Access Switchboard, where do I go to the code window?

Fredg said:
When you open a form from any other form it will always open in form view,
unless you specifically open it using:
DoCmd.OpenForm "FormName", acFormDS

If this is a user made switchboard, just add ,acFormDS to the code.

If this is the Access switchboard made using the built-in switchboard
manager, you'll have to go into the code window, find 'Function
HandleButtonClick',
Dim a new constant
Const conCmdOpenFormDS = 10 ' or whatever your next higher number is
and then add some code in the Select Case statement
to tell the function to open the form acFormDS:

Case conCmdOpenFormDS
DoCmd.OpenForm rst![Argument]

Then change the Command value in the switchboard table to that new constant
number.

If you wish to make it even easier, code a Public Module
DoCmd.OpenForm "FormName",acFormDS

Then change the switchboard to RunCode and give it this Sub's Name.

Have fun.

--
Fred

Please reply only to this newsgroup.
I do not reply to personal e-mail.


Annelie said:
When I create a form and set it to datasheet view, opening the form always
shows the datasheet view.
But when the form is opened using the switchboard, it always opens in forms
view, even the defaults are set to Datasheet only
Can that be changed?
 
Fred, I thought I did quite well, but it does not work
Here is my code. I did change the command in the table to 10.
There no errors in my code. I even switched the word argument with the forms
name listed under argument in the switchboard table, but that did not work
either
Thank for all your help.
Annelie

Option Compare Database

Private Sub Form_Load()

End Sub

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
Const conCmdOpenFormDS = 10

' 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]

' Open form in Datasheet View
Case conCmdOpenFormDS
DoCmd.OpenForm rst![Argument], acFormDS

' 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
 
Back
Top