Hallo,
Afgelopen maanden heb ik een mooie database voor mijn stage maakt. Het werkt echt super en genereert zelf automatisch datums. Dus als ik 1 datum invoeg staat hij er gelijk tot 2008 in.
Maar nu wou ik als laatste mijn schakelbord maken. Ik heb hem al ingevult maar krijg ik foutmelding, misschien weten jullie er iets van.
Het vet gedrukte is volgens Access de foutmelding.
Option Compare Database
Option Explicit
Private Sub Form_Open(Cancel As Integer)
' Het databasevenster minimaliseren en het formulier initialiseren.
' Naar de schakelbordpagina gaan die is gemarkeerd
' als standaard.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Standaard' "
Me.FilterOn = True
End Sub
Private Sub Form_Current()
' Het bijschrift bijwerken en de lijst met opties invullen.
Me.Caption = Nz(Me![ItemText], "")
FillOptions
End Sub
Private Sub FillOptions()
' De opties invullen voor deze schakelbordpagina.
' Het aantal knoppen op het formulier.
Const conNumButtons = 8
Dim dbs As Database
Dim rst As Recordset
Dim strSQL As String
Dim intOption As Integer
' De focus instellen op de eerste knop van het formulier
' en alle andere knoppen op het formulier verbergen.
' U kunt het veld met de focus niet verbergen.
Me![Option1].SetFocus
For intOption = 2 To conNumButtons
Me("Option" & intOption).Visible = False
Me("OptionLabel" & intOption).Visible = False
Next intOption
' De tabel Onderdelen van Schakelbord openen en het
' eerste onderdeel voor deze schakelbordpagina opzoeken.
Set dbs = CurrentDb()
strSQL = "SELECT * FROM [Onderdelen van Schakelbord]"
strSQL = strSQL & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
strSQL = strSQL & " ORDER BY [ItemNumber];"
Set rst = dbs.OpenRecordset(strSQL)
' Als er geen opties voor deze schakelbordpagina zijn, een
' bericht weergeven. Anders de pagina met onderdelen vullen.
If (rst.EOF) Then
Me![OptionLabel1].Caption = "Er zijn geen onderdelen voor deze schakelbordpagina"
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
' De recordset en de database sluiten.
rst.Close
dbs.Close
End Sub
Private Function HandleButtonClick(intBtn As Integer)
' Deze functie wordt aangeroepen als op een knop wordt geklikt.
' intBtn geeft aan op welke knop is geklikt.
' Constanten voor de opdrachten die kunnen worden uitgevoerd.
Const conCmdGotoSwitchboard = 1
Const conCmdOpenFormAdd = 2
Const conCmdOpenFormBrowse = 3
Const conCmdOpenReport = 4
Const conCmdCustomizeSwitchboard = 5
Const conCmdExitApplication = 6
Const conCmdRunMacro = 7
Const conCmdRunCode = 8
' Een fout die als speciaal geval wordt gezien.
Const conErrDoCmdCancelled = 2501
Dim dbs As Database
Dim rst As Recordset
On Error GoTo HandleButtonClick_Err
' Het onderdeel in de tabel Onderdelen van Schakelbord opzoeken
' dat overeenkomt met de knop waarop is geklikt.
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Onderdelen van Schakelbord", dbOpenDynaset)
rst.FindFirst "[SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn
' Als geen onderdeel overeenstemt, fout melden en functie
' afsluiten.
If (rst.NoMatch) Then
MsgBox "Er is een fout opgetreden bij het lezen van de tabel Onderdelen van Schakelbord."
rst.Close
dbs.Close
Exit Function
End If
Select Case rst![Command]
' Naar een ander schakelbord gaan.
Case conCmdGotoSwitchboard
Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rst![Argument]
' Formulier openen in toevoegmodus.
Case conCmdOpenFormAdd
DoCmd.OpenForm rst![Argument], , , , acAdd
' Een formulier openen.
Case conCmdOpenFormBrowse
DoCmd.OpenForm rst![Argument]
' Een rapport openen.
Case conCmdOpenReport
DoCmd.OpenReport rst![Argument], acPreview
' Het schakelbord aanpassen.
Case conCmdCustomizeSwitchboard
' Geval afhandelen dat het Schakelbordbeheer niet
' is geïnstalleerd (bijv. bij minimale installatie).
On Error Resume Next
Application.Run "WZMAIN80.sbm_Entry"
If (Err <> 0) Then MsgBox "Opdracht niet beschikbaar."
On Error GoTo 0
' Het formulier bijwerken.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Standaard' "
Me.Caption = Nz(Me![ItemText], "")
FillOptions
' De toepassing afsluiten.
Case conCmdExitApplication
CloseCurrentDatabase
' Een macro starten.
Case conCmdRunMacro
DoCmd.RunMacro rst![Argument]
' Code uitvoeren.
Case conCmdRunCode
Application.Run rst![Argument]
' Een andere opdracht wordt niet herkend.
Case Else
MsgBox "Onbekende optie."
End Select
' De recordset en de database sluiten.
rst.Close
dbs.Close
HandleButtonClick_Exit:
Exit Function
HandleButtonClick_Err:
' Als de actie om de een of andere reden door de gebruiker
' wordt geannuleerd, geen foutbericht weergeven, maar
' doorgaan op de volgende regel.
If (Err = conErrDoCmdCancelled) Then
Resume Next
Else
MsgBox "Er is een fout opgetreden bij het uitvoeren van de opdracht.", vbCritical
Resume HandleButtonClick_Exit
End If
End Function
Afgelopen maanden heb ik een mooie database voor mijn stage maakt. Het werkt echt super en genereert zelf automatisch datums. Dus als ik 1 datum invoeg staat hij er gelijk tot 2008 in.
Maar nu wou ik als laatste mijn schakelbord maken. Ik heb hem al ingevult maar krijg ik foutmelding, misschien weten jullie er iets van.
Het vet gedrukte is volgens Access de foutmelding.
Option Compare Database
Option Explicit
Private Sub Form_Open(Cancel As Integer)
' Het databasevenster minimaliseren en het formulier initialiseren.
' Naar de schakelbordpagina gaan die is gemarkeerd
' als standaard.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Standaard' "
Me.FilterOn = True
End Sub
Private Sub Form_Current()
' Het bijschrift bijwerken en de lijst met opties invullen.
Me.Caption = Nz(Me![ItemText], "")
FillOptions
End Sub
Private Sub FillOptions()
' De opties invullen voor deze schakelbordpagina.
' Het aantal knoppen op het formulier.
Const conNumButtons = 8
Dim dbs As Database
Dim rst As Recordset
Dim strSQL As String
Dim intOption As Integer
' De focus instellen op de eerste knop van het formulier
' en alle andere knoppen op het formulier verbergen.
' U kunt het veld met de focus niet verbergen.
Me![Option1].SetFocus
For intOption = 2 To conNumButtons
Me("Option" & intOption).Visible = False
Me("OptionLabel" & intOption).Visible = False
Next intOption
' De tabel Onderdelen van Schakelbord openen en het
' eerste onderdeel voor deze schakelbordpagina opzoeken.
Set dbs = CurrentDb()
strSQL = "SELECT * FROM [Onderdelen van Schakelbord]"
strSQL = strSQL & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
strSQL = strSQL & " ORDER BY [ItemNumber];"
Set rst = dbs.OpenRecordset(strSQL)
' Als er geen opties voor deze schakelbordpagina zijn, een
' bericht weergeven. Anders de pagina met onderdelen vullen.
If (rst.EOF) Then
Me![OptionLabel1].Caption = "Er zijn geen onderdelen voor deze schakelbordpagina"
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
' De recordset en de database sluiten.
rst.Close
dbs.Close
End Sub
Private Function HandleButtonClick(intBtn As Integer)
' Deze functie wordt aangeroepen als op een knop wordt geklikt.
' intBtn geeft aan op welke knop is geklikt.
' Constanten voor de opdrachten die kunnen worden uitgevoerd.
Const conCmdGotoSwitchboard = 1
Const conCmdOpenFormAdd = 2
Const conCmdOpenFormBrowse = 3
Const conCmdOpenReport = 4
Const conCmdCustomizeSwitchboard = 5
Const conCmdExitApplication = 6
Const conCmdRunMacro = 7
Const conCmdRunCode = 8
' Een fout die als speciaal geval wordt gezien.
Const conErrDoCmdCancelled = 2501
Dim dbs As Database
Dim rst As Recordset
On Error GoTo HandleButtonClick_Err
' Het onderdeel in de tabel Onderdelen van Schakelbord opzoeken
' dat overeenkomt met de knop waarop is geklikt.
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Onderdelen van Schakelbord", dbOpenDynaset)
rst.FindFirst "[SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn
' Als geen onderdeel overeenstemt, fout melden en functie
' afsluiten.
If (rst.NoMatch) Then
MsgBox "Er is een fout opgetreden bij het lezen van de tabel Onderdelen van Schakelbord."
rst.Close
dbs.Close
Exit Function
End If
Select Case rst![Command]
' Naar een ander schakelbord gaan.
Case conCmdGotoSwitchboard
Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rst![Argument]
' Formulier openen in toevoegmodus.
Case conCmdOpenFormAdd
DoCmd.OpenForm rst![Argument], , , , acAdd
' Een formulier openen.
Case conCmdOpenFormBrowse
DoCmd.OpenForm rst![Argument]
' Een rapport openen.
Case conCmdOpenReport
DoCmd.OpenReport rst![Argument], acPreview
' Het schakelbord aanpassen.
Case conCmdCustomizeSwitchboard
' Geval afhandelen dat het Schakelbordbeheer niet
' is geïnstalleerd (bijv. bij minimale installatie).
On Error Resume Next
Application.Run "WZMAIN80.sbm_Entry"
If (Err <> 0) Then MsgBox "Opdracht niet beschikbaar."
On Error GoTo 0
' Het formulier bijwerken.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Standaard' "
Me.Caption = Nz(Me![ItemText], "")
FillOptions
' De toepassing afsluiten.
Case conCmdExitApplication
CloseCurrentDatabase
' Een macro starten.
Case conCmdRunMacro
DoCmd.RunMacro rst![Argument]
' Code uitvoeren.
Case conCmdRunCode
Application.Run rst![Argument]
' Een andere opdracht wordt niet herkend.
Case Else
MsgBox "Onbekende optie."
End Select
' De recordset en de database sluiten.
rst.Close
dbs.Close
HandleButtonClick_Exit:
Exit Function
HandleButtonClick_Err:
' Als de actie om de een of andere reden door de gebruiker
' wordt geannuleerd, geen foutbericht weergeven, maar
' doorgaan op de volgende regel.
If (Err = conErrDoCmdCancelled) Then
Resume Next
Else
MsgBox "Er is een fout opgetreden bij het uitvoeren van de opdracht.", vbCritical
Resume HandleButtonClick_Exit
End If
End Function