Benutzer mit den meisten Antworten
VBA Ereignisprozeduren können nicht ausgeführt werden

Frage
-
Hallo Leute,
mit VBA für Access 2010 bin ich auf folgenes Problem gestoßen:
Ich habe ein kleines SubFormular, welches genutzt werden soll um mit Hilfe von 5 Textfeldern Einträge in einer Tabelle zu filtern, aus der dann ein Datensatz ausgewählt werden kann. Zudem besitzt das SubFormular zwei Buttons, welche zum navigieren bzw. bestätigen der Auswahl dienen.
Das SubFormular verwendet folgenden Code:
Option Compare Database Option Explicit Dim spID As Integer Dim addressID As Integer Dim name As String Dim street As String Dim city As String Dim postalCode As String Dim land As String Private Sub close_button_Click() closeSubForm End Sub Private Sub set_button_Click() If suggestion_list.listIndex = -1 Or IsNull(suggestion_list.Column(0, suggestion_list.listIndex)) Then Exit Sub End If writeSelection End Sub Private Sub suggestion_list_Click() If suggestion_list.listIndex = -1 Or IsNull(suggestion_list.Column(0, suggestion_list.listIndex)) Then Exit Sub spID = suggestion_list.Column(0, suggestion_list.listIndex) setSPRecordSet End Sub Private Sub Form_Current() Debug.Print (Now() & "> " & Me.name) 'initVars getArguments 'refreshSuggestionList End Sub Private Sub initVars() name = "%" street = "%" location = "%" postalCode = "%" land = "%" End Sub Private Sub getArguments() spID = Me.Parent.getSubArguments.Item("spID") If spID <> -1 Then setSPRecordSet setAddressRecordSet End If End Sub
Die Prozedur closeSubForm signalisiert dem ParentForm, dass das SubFormular geschlossen werden soll.
writeSelection nimmt das ausgewählte Element und gibt es an das ParentForm zurück.
setSPRecordSet und setAddressRecordSet sind Prozeduren, welche eine Verbinung zur Datenbank aufbauen und von dort Datensätze für die Auswahlliste suggestion_list holen.
Aktuell ist es allerdings so, dass sämtliche Ereignisse (also Form_Current, close_button_Click, set_button_Click, suggestion_list_Click) auf dem SubFormular nicht ausgeführt werden, wobei die Buttons auch die folgende Access Warnung auslösen:
Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck Beim Klicken eingegeben.
Dieser Ausdruck hat einen Fehler verursacht: Das Element ist bereits in einem
Objektmodul vorhanden, von der dieses Objektmodul abgeleitet wird. *Der Ausdruck gibt möglicherweise weder den Namen eines Makros noch den Namen einer
benutzerdefinierten Funktion noch [Ereignisprozedur] zurück. *Beim Auswerten einer Funktion, eines Ereignisses oder eines Makros trat
möglicherweise ein Fehler auf. Dieser Fehler tritt auf, wenn ein Ereignis nicht ausgeführt werden konnte,
weil der Speicherort der Logik für das Ereignis nicht ausgewertet werden kann.
Falls z. B. die OnOpen-Eigenschaft eines Formulars auf =[Field] festgelegt ist,
tritt dieser Fehler auf, weil die Ausführung eines Makros oder Ereignisnamens erwartet wird,
wenn das Ereignis auftritt.
In der Entwurfsansicht von Access steht bei jedem Objekt, welches auf Ereignisse reagieren soll, dass die Ereignisprozedur existiert.
Die Warnung wird auch dann ausgelöst, wenn die Prozeduren leer sind.
Auffällig ist, dass die Ereignisse korrekt ausgeführt werden, wenn die String-FeldVariablen name, street, city, postalCode und land nicht vorhanden sind.
Ich benutze das gleiche Vorgehen in vielen SubFormularen, in denen die Ereignisse (bisher) einwandfrei ausgelöst werden.
Kann jemand erklären warum dieser Fehler an dieser Stelle auftritt ?
Gruß, Elafane
- Bearbeitet Elafane Freitag, 2. März 2018 19:58
Antworten
-
Möglicherweise liegt eine Korruption vor. Als erstes würde ich eine neue leere Datenbank erstellen und alle Objekte aus der alten Datenbank importieren und schauen, ob der Fehler immer noch auftritt.
Übrigens, "Name" ist ein schlechter Variablenname, da es leicht zu Verwechslungen mit der Namen-Eigenschaft von Objekten kommen kann, aber ich denke nicht, dass es daran liegt.
Matthias Kläy, Kläy Computing AG
- Als Antwort markiert Elafane Dienstag, 6. März 2018 09:13
Alle Antworten
-
Möglicherweise liegt eine Korruption vor. Als erstes würde ich eine neue leere Datenbank erstellen und alle Objekte aus der alten Datenbank importieren und schauen, ob der Fehler immer noch auftritt.
Übrigens, "Name" ist ein schlechter Variablenname, da es leicht zu Verwechslungen mit der Namen-Eigenschaft von Objekten kommen kann, aber ich denke nicht, dass es daran liegt.
Matthias Kläy, Kläy Computing AG
- Als Antwort markiert Elafane Dienstag, 6. März 2018 09:13