Ik heb een database met daarin een standaardfunctie:
Deze standaardfunctie die ik heb gemaakt opent een formulier o.b.v. een keuze uit een listbox. Als er niets gekozen is in de listbox dan volgt een melding voor de gebruiker dat hij een keuze moet maken.
Deze code loopt goed, maar als ik onder MSAccess runtime de database laat lopen treedt er een runtimerror op nadat de gebruiker op OK drukt (bij de melding).
Onder de normale MSAccess kan ik deze error niet tevoorschijn krijgen. Ik kan de foutondervanging aan en uitschakelen met een globale parameter "Disableerrorhandling", maar ook als ik de eerste regel helemaal verwijder (en er dus geen errorondervanging meer is) krijg ik geen errors.
Voor de duidelijkheid: de code loopt van regel 7 t/m 12 naar 21 en is dan klaar
Iemand een idee? Dit is de enige code die loopt na het drukken op de knop (behalve de aanroep van deze code onder de knopgebeurtenis), maar op elke plek in de database waar ik deze functie gebruik (bij het bewerken van listboxen) krijg ik onder runtime deze fout
MSRuntime 2010 met SP1 is geinstalleerd
error: de uitvoering van deze toepassing is gestopt omdat er een runtimefout is opgetreden. De toepassing kan niet doorgaan en wordt afgesloten
daarna:
De expressie "Bij sluiten" die u hebt opgegeven als instelling voor de gebeurteniseigenschap, heeft de volgende fout veroorzaakt: u kunt deze actie momenteel niet uitvoeren.
* De expressie geeft niet de naam van een macro, de naam van een door de gebruiker gedefinieerde functie of een [gebeurtenisprocedure] als resultaat
* Er is een fout opgetreden bij het evalueren van een functie, gebeurtenis of macro
Het lijkt erop dat de tweede error optreedt omdat de database afgesloten wordt terwijl er functies lopen als de database normaliter afgesloten wordt
edit: ik heb een verwijderfunctie die hetzelfde doet, alleen in plaats van een form openen o.b.v. een key verwijderd deze een (of meer) record uit een tabel met een SQL-statement. Deze functie heeft dezelfde melding als de gebruiker niets selecteert.
Bij deze functie treedt geen error op terwijl ie hetzelfde doet als de gebruiker niets geselecteerd heeft.
Stukje van de verwijderfunctie:
een miniscuul verschil is dat de exit sub opgenomen is in de IF, maar dat maakt niks uit (ik kan het veranderen: zelfde probleem)
Als ik nou in ieder geval een mogelijkheid heb om dezelfde fout te genereren in MSAccess....
edit: als ik de originele .accdb laat lopen onder runtime heb ik dit probleem niet. Het treedt op in de .accde die ik gepackaged heb met de wizard in een installer.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| If Not DisableErrorhandling Then On Error GoTo Err_Handler Dim msg, Title, Style, Response Dim Varelement As Variant Dim StLinkCriteria As String If Ctl_keuzelijst.ItemsSelected.Count = 0 Then msg = "U dient eerst een regel te selecteren" Title = "Foutmelding" Style = vbOKOnly + vbExclamation + vbDefaultButton1 Response = MsgBox(msg, Style, Title) GoTo Exit_Handler End If For Each Varelement In Ctl_keuzelijst.ItemsSelected StLinkCriteria = "[" & Tabel_Sleutel & "]=" & Ctl_keuzelijst.ItemData(Varelement) DoCmd.OpenForm Bewerk_Form, , , StLinkCriteria Next Varelement Exit_Handler: Exit Sub Err_Handler: Select Case Err.Number Case 3075 'geen gegevens geselecteerd Resume Exit_Handler Case Else Call LogError(Err.Number, Err.Description, conmod & "keuzelijst_bewerken") Resume Exit_Handler End Select End Sub |
Deze standaardfunctie die ik heb gemaakt opent een formulier o.b.v. een keuze uit een listbox. Als er niets gekozen is in de listbox dan volgt een melding voor de gebruiker dat hij een keuze moet maken.
Deze code loopt goed, maar als ik onder MSAccess runtime de database laat lopen treedt er een runtimerror op nadat de gebruiker op OK drukt (bij de melding).
Onder de normale MSAccess kan ik deze error niet tevoorschijn krijgen. Ik kan de foutondervanging aan en uitschakelen met een globale parameter "Disableerrorhandling", maar ook als ik de eerste regel helemaal verwijder (en er dus geen errorondervanging meer is) krijg ik geen errors.
Voor de duidelijkheid: de code loopt van regel 7 t/m 12 naar 21 en is dan klaar
Iemand een idee? Dit is de enige code die loopt na het drukken op de knop (behalve de aanroep van deze code onder de knopgebeurtenis), maar op elke plek in de database waar ik deze functie gebruik (bij het bewerken van listboxen) krijg ik onder runtime deze fout
MSRuntime 2010 met SP1 is geinstalleerd
error: de uitvoering van deze toepassing is gestopt omdat er een runtimefout is opgetreden. De toepassing kan niet doorgaan en wordt afgesloten
daarna:
De expressie "Bij sluiten" die u hebt opgegeven als instelling voor de gebeurteniseigenschap, heeft de volgende fout veroorzaakt: u kunt deze actie momenteel niet uitvoeren.
* De expressie geeft niet de naam van een macro, de naam van een door de gebruiker gedefinieerde functie of een [gebeurtenisprocedure] als resultaat
* Er is een fout opgetreden bij het evalueren van een functie, gebeurtenis of macro
Het lijkt erop dat de tweede error optreedt omdat de database afgesloten wordt terwijl er functies lopen als de database normaliter afgesloten wordt
edit: ik heb een verwijderfunctie die hetzelfde doet, alleen in plaats van een form openen o.b.v. een key verwijderd deze een (of meer) record uit een tabel met een SQL-statement. Deze functie heeft dezelfde melding als de gebruiker niets selecteert.
Bij deze functie treedt geen error op terwijl ie hetzelfde doet als de gebruiker niets geselecteerd heeft.
Stukje van de verwijderfunctie:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| If Not DisableErrorhandling Then On Error GoTo Err_Handler Dim msg, Title, Style, Response Dim SQL_delete Dim Varelement As Variant Dim keuzelijst_item As Variant If Ctl_keuzelijst.ItemsSelected.Count = 0 Then msg = "U dient eerst een regel te selecteren" Title = "Foutmelding" Style = vbOKOnly + vbExclamation + vbDefaultButton1 Response = MsgBox(msg, Style, Title) Exit Sub End If hiervolgt de rest |
een miniscuul verschil is dat de exit sub opgenomen is in de IF, maar dat maakt niks uit (ik kan het veranderen: zelfde probleem)
Als ik nou in ieder geval een mogelijkheid heb om dezelfde fout te genereren in MSAccess....
edit: als ik de originele .accdb laat lopen onder runtime heb ik dit probleem niet. Het treedt op in de .accde die ik gepackaged heb met de wizard in een installer.
[ Voor 37% gewijzigd door Stefke op 21-02-2012 10:17 ]