I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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] = 'Standard' " 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 = "Der er ingen elementer til denne oversigtsside" 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 "Der opstod en fejl under læsning af tabellen Oversigtselementer." 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 "Kommandoen er ikke tilgængelig." On Error GoTo 0 ' Update the form. Me.filter = "[ItemNumber] = 0 AND [Argument] = 'Standard' " 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 "Ukendt parameter."
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 "Der opstod en fejl under udførelse af kommandoen.", vbCritical Resume HandleButtonClick_Exit End If
Dette er ikke nogen fejl, men blot det et faktum, at Access gør dette.
Der er 2 løsninger: Løsning 1) Skriv HandleButtonClick-funktionen om, så den checker på hvilke formularer du åbner. Den del som ser således ud: 'Open a form. Case conCmdOpenFormBrowse DoCmd.OpenForm rs![Argument] ...kan skrives om til: 'Open a form. Case conCmdOpenFormBrowse Select Case rs![Argument] Case "formular1", "Formular3" docmd.Openform rs![Argument] case "Formular2" docmd.Openform rs![Argument],acFormDS end select ...
Løsning 2) Undgå at åbne formularer direkte i datasheet. Lav i stedet en alm. formular, hvori du indsætter datasheet-formlaren som subform. Dette ser også klart bedre ud, da formularen derved får en ordentlig ramme, hvilket kan mangle i datasheet-view.
Hvis du laver en tom formular i designvisning (ingen guide), så kan du herefter 'trække' din datasheet-formular fra databasevinduet og ind på den nye formular. Derved bliver det en hovedformular/underformular, som blot skal åbnes alm.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.