"Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck Beim
Anzeigen eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Return
ohne GoSub.
* 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."
In der dazu angebotenen Hilfe heisst es:
"Dieser Fehler tritt auf, wenn ein Ereignis nicht ausgeführt werden konnte,
weil der Speicherort der Logik für das Ereignis von Microsoft Office Access
nicht ausgewertet werden kann. Falls z. B. die OnOpen-Eigenschaft eines
Formulars auf =[Field] festgelegt ist, tritt dieser Fehler auf, weil Access
die Ausführung eines Makros oder Ereignisnamens erwartet, wenn das Ereignis
ausgelöst wird."
Das Formular enthält zahlreiche Schaltflächen. Die Fehlermeldung tritt beim
Betätigen irgend einer davon oder beim Versuch es zu schliessen auf. Der
Fehlertext bezieht sich nicht nur auf die VBA-Prozedur "Beim Anzeigen",
sondern auf immer wieder andere, z.B. "Bei Fokuserhalt" oder "Bei
Fokusverlust" oder bei "Klick" auf eine Schaltfläche. Scheint ziemlich
zufällig zu sein. Wenn ich eine Prozedur entferne, scheint der Fehler
einfach die nächste zu befallen.
Das Formular ist "alt", ebenso wie die Datenbankanwendung. Beides wurde
ursprünglich schon unter Access 97 erzeugt und programmiert und läuft seit
Jahren, enthält aber überhaupt nichts Aussergewöhnliches. Schaltflächen, die
bestimmte Datensätze holen, je nach Datensatz ändern sich gewisse
Formateigenschaften des Formulars, alles sehr simpel. Das Problem trat
plötzlich auf, nachdem ich einige VBA-Sachen (hauptsächlich Farben und
andere Formate) umprogrammiert hatte. Die Prozeduren, die jetzt in der
Fehlermeldung gemeldet werden, habe ich dabei gar nicht angefasst.
Übrigens: Der genannte Fehler "Return ohne GoSub" ist eine Beleidigung. Ich
habe einen so obzönen Befehl wie GoSub zuletzt vor 30 Jahren auf einem Apple
II benutzt.
Paul
Paul Batt wrote:
> Ich erhalte in Access 2007 bei einem Formular einer Datenbank im
> Access 2003-Forumat öfters folgende Fehlermeldung:
>
> "Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck Beim
> Anzeigen eingegeben. Dieser Ausdruck hat einen Fehler verursacht:
> Return ohne GoSub.
Probier's mal mit einem Decompile wie hier beschreiben :
1.23 Decompile (www.donkarl.com?FAQ1.23)
Gruss
Jens
Hallo Jens.
Das hat geholfen, aber... Dasselbe Problem trat erneut auf, als ich ein
weiteres Formular umprogrammiert habe. Ich hab dabei bloss einen Button
hinzugefügt, der ein anderes Formular öffnet. Das kann natürlich kein
Dauerzustand sein. Laut Doku sollte man Decompile ja auch nicht ständig
anwenden. Ist vielleicht sonst irgendwas über diesen Bug bekannt? Kanns was
damit zu tun haben, dass eine 2003-DB-Formular unter A2007 bearbeitet wird?
Oder ist es ein allenfalls bekanntes A2007-Problem?
Vielen Dank, Paul
Paul Batt wrote:
>> Probier's mal mit einem Decompile wie hier beschreiben :
>> 1.23 Decompile (www.donkarl.com?FAQ1.23)
>
> Hallo Jens.
> Das hat geholfen, aber... Dasselbe Problem trat erneut auf, als ich
> ein weiteres Formular umprogrammiert habe. Ich hab dabei bloss einen
> Button hinzugefügt, der ein anderes Formular öffnet. Das kann
> natürlich kein Dauerzustand sein. Laut Doku sollte man Decompile ja
> auch nicht ständig anwenden. Ist vielleicht sonst irgendwas über
> diesen Bug bekannt? Kanns was damit zu tun haben, dass eine
> 2003-DB-Formular unter A2007 bearbeitet wird? Oder ist es ein
> allenfalls bekanntes A2007-Problem?
Ja, inflationär sollte man mit dem Decompile nicht umgehen ;-)
Als allgemeinen Tipp möchte ich Dir einfach mal die Lektüre der FAQ 1.27
Vorgehen bei defekten Datenbanken (www.donkarl.com?FAQ1.27) nahe legen - nur
so zur Info, was die Ursachen sein können, und wie man einige Probleme
beheben kann; das darin ebenfalls erwähnte Decompile kennt Du ja nun schon.
Ansonsten würde ich mir jetzt eine neue DB anlegen, und alle Objekte in
diese importieren; das ist ein gängiger Weg, eine augenscheinlich korrupte
DB zu retten.
Aber, dass die Ursache darin zu suchen wäre, dass das Bearbeiten der DB
unter A07 erfolgt, darf man wohl ausschliessen.
Gruss
Jens