Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

MSAccess 2010, "normale" code werkt, onder Runtime: error

Pagina: 1
Acties:

  • Stefke
  • Registratie: December 2000
  • Laatst online: 21-11 18:08
Ik heb een database met daarin een standaardfunctie:
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 ]


  • Stefke
  • Registratie: December 2000
  • Laatst online: 21-11 18:08
LAAT MAAR!

Ik heb heel stom over het probleem heen zitten kijken: elke keer als ik mijn DB package dan package ik de accde (niet de accdb waar ik wijzigingen heb gemaakt), maar bij alle wijzigingen en het zoeken naar dit probleem heb ik de accde niet vervangen!

Ik zit dus telkens te controleren of mijn wijzigingen effect hebben met een ongewijzigde accde... |:(

Topic mag weg van mij!