Also, my references:
Visual Basic for Applications
Microsoft Access 11.0 Object Library
OLE Automation
Microsoft DAO 3.6 Object Library
Microsoft ActiveX Data Objects 2.1 Library
Option Compare Database
Option Explicit
Public LoginUserName As String
Public db As DAO.Database
Public rs As DAO.Recordset
Public dbt As DAO.Database
Public rst As DAO.Recordset
DB doesn't work when opening as MDE on Computer using MS 2007 runtime, however it works on computer with the full Access 2003. Sorry for having so many posts, but this is the last item i have left and I need to release this db.
Thank you for your time.
And I don't know if this will help, but here is my Switchboard (i.e. named as Main Screen codes):
Code:
Option Compare Database
Option Explicit
Private Sub chgpass_Click()
DoCmd.RunMacro "mcrHide"
DoCmd.OpenForm "Change Password", acNormal
End Sub
Private Sub Form_Close()
DoCmd.Quit
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.
'MsgBox "I am in the main screen open form"
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' "
Me.FilterOn = True
Dim strGetLev As String
strGetLev = "SELECT * FROM EmpInfo WHERE EmpInfo.EmpEmail = '" + LoginUserName + "'"
Set db = CurrentDb
Set rs = db.OpenRecordset(strGetLev)
If rs!AccessLev = "USER" Then
Me.Option2.Enabled = False
Me.Option3.Enabled = False
Me.Option4.Enabled = False
Me.Option5.Enabled = False
'Me.Option9.Enabled = False
'Me.Option7.Enabled = False - comment when complete --to allow users this option
Me.Option10.Enabled = False
Me.Option11.Enabled = False
Me.Option8.Enabled = False
End If
If rs!AccessLev = "ADMIN" Then
Me.Option1.Enabled = True
Me.Option2.Enabled = True
Me.Option3.Enabled = True
Me.Option4.Enabled = True
Me.Option5.Enabled = True
Me.Option6.Enabled = True
Me.Option7.Enabled = True
Me.Option9.Enabled = True
Me.Option10.Enabled = True
Me.Option11.Enabled = True
Me.Option8.Enabled = True
End If
If rs!AccessLev = "SUPERUSER" Then
DoCmd.SelectObject acTable, , True
Else
DoCmd.SelectObject acTable, , True
DoCmd.RunCommand acCmdWindowHide
End If
Set rs = Nothing
Set db = Nothing
strGetLev = vbNullString
End Sub
Private Sub Form_Current() ' Update the caption and fill in the list of options.
'MsgBox "I am in the main screen form current"
Me.Caption = Nz(Me![ItemText], "")
FillOptions
End Sub
Private Sub FillOptions() ' Fill in the options for this switchboard page.
'MsgBox "I am in the main screen filloptions"
Const conNumButtons = 11 ' The number of buttons on the form.
Dim con As Object
Dim rso 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 rso = CreateObject("ADODB.Recordset") '<---- can this be the problem?
rso.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 (rso.EOF) Then
Me![OptionLabel1].Caption = "There are no items for this switchboard page"
Else
While (Not (rso.EOF))
Me("Option" & rso![ItemNumber]).Visible = True
Me("OptionLabel" & rso![ItemNumber]).Visible = True
Me("OptionLabel" & rso![ItemNumber]).Caption = rso![ItemText]
rso.MoveNext
Wend
End If
' Close the recordset and the database.
rso.Close
Set rso = 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 rso 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 rso = CreateObject("ADODB.Recordset")
stSql = "SELECT * FROM [Switchboard_Items] "
stSql = stSql & "WHERE [SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn
rso.Open stSql, con, 1 ' 1 = adOpenKeyset
' If no item matches, report the error and exit the function.
If (rso.EOF) Then
MsgBox "There was an error reading the Switchboard Items table."
rso.Close
Set rso = Nothing
Set con = Nothing
Exit Function
End If
Select Case rso![Command]
' Go to another switchboard.
Case conCmdGotoSwitchboard
Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rso![Argument]
' Open a form in Add mode.
Case conCmdOpenFormAdd
DoCmd.OpenForm rso![Argument], , , , acAdd
' Open a form.
Case conCmdOpenFormBrowse
DoCmd.OpenForm rso![Argument]
' Open a report.
Case conCmdOpenReport
DoCmd.OpenReport rso![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 rso![Argument]
' Run code.
Case conCmdRunCode
Application.Run rso![Argument]
' Open a Data Access Page
Case conCmdOpenPage
DoCmd.OpenDataAccessPage rso![Argument]
' Any other command is unrecognized.
Case Else
MsgBox "Unknown option."
End Select
' Close the recordset and the database.
rso.Close
HandleButtonClick_Exit:
On Error Resume Next
Set rso = 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