Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: FlyingFlo am November 13, 2016, 20:22:47

Titel: VBA-Probleme nach ACCDE-Erstellung
Beitrag von: FlyingFlo am November 13, 2016, 20:22:47
Hallo,

ich habe eine ACCDE-Datei erstellt. Sobald ich diese öffne und VBA-Code ausgeführt wird, erhalte ich folgende Fehlermeldung:

Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck (hier stehen dann verschiedene Ereignisse) eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Sie haben einen Ausdruck eingegeben, der einen ungültigen Verweis auf die Form/Report-Eigenschaft enthält. (und dann steht da noch mehr, ich denke aber nicht, dass das relevant ist).

Diese Fehlermeldung tritt bei unterschiedlichen Handlungen an unterschiedlichen Stellen auf. Der VBA-Code wird dennoch ausgeführt. Der Fehler ist zudem nicht eindeutig reproduzierbar und wirkt, als würde er zufällig auftreten. Bei der identischen ACCDB-Datei gibt es keinerlei Probleme!!!

Habt ihr Erfahrungen damit? Woran könnte das liegen?

Danke und viele Grüße,
Florian
Titel: Re: VBA-Probleme nach ACCDE-Erstellung
Beitrag von: DF6GL am November 13, 2016, 21:40:47
Hallo,


1) ist in allen(!) Modulen Option Explicit angegeben?
2) Ist die DB komplett kompiliert (VBA-Editor/Debuggen/Kompilieren)?
3) Ist eine durchgängige Fehlerbehandlung eingebaut? ("On Error Resume Next" sollte/darf nicht benutzt sein)

Titel: Re: VBA-Probleme nach ACCDE-Erstellung
Beitrag von: MaggieMay am November 13, 2016, 23:15:54
Hallo,
Zitat von: DF6GL am November 13, 2016, 21:40:47
"On Error Resume Next" sollte/darf nicht benutzt sein
solch kategorische Aussagen erwecken gern meinen Widerspruch. ;)

Es spricht doch eigentlich nichts dagegen, diesen Befehl einzusetzen, wenn man die Fehler die dadurch ignoriert werden kennt und einschätzen kann.

So tritt bspw. ein Fehler auf, wenn man ein Objekt löscht, ehe man es neu erstellt, wenn es gar nicht existiert. In diesem Fall kann einem der Fehler herzlich egal sein.  :)
Natürlich kann man das auch anders abhandeln und zunächst prüfen ob das Objekt existiert und es erst dann löschen, aber davon hängt die Stabilität eines Programms sicherlich nicht ab.
Titel: Re: VBA-Probleme nach ACCDE-Erstellung
Beitrag von: PhilS am November 14, 2016, 07:43:11
Zitat von: FlyingFlo am November 13, 2016, 20:22:47
... ACCDE-Datei ...
Diese Fehlermeldung tritt bei unterschiedlichen Handlungen an unterschiedlichen Stellen auf. Der VBA-Code wird dennoch ausgeführt.
Kannst du mal exemplarisch den Code einer der Stellen, die häufiger den Fehler auslösen, hier posten?
Pauschal kann man zu deiner Fehlermeldung wenig sagen. Ich vermute die Ursache auch in Richtung einer unzulänglichen Fehlerbehandlung.
Titel: Re: VBA-Probleme nach ACCDE-Erstellung
Beitrag von: PhilS am November 14, 2016, 07:53:26
Zitat von: MaggieMay am November 13, 2016, 23:15:54
Zitat von: DF6GL am November 13, 2016, 21:40:47
"On Error Resume Next" sollte/darf nicht benutzt sein
solch kategorische Aussagen erwecken gern meinen Widerspruch. ;)
Es spricht doch eigentlich nichts dagegen, diesen Befehl einzusetzen, wenn man die Fehler die dadurch ignoriert werden kennt und einschätzen kann.
On Error Resume Next ist kein Problem, wenn es bewusst und bedachtsam eingesetzt wird. - Gerade bei dieser Einschränkung sehe ich aber das Problem, dass eine Fehlersituation entstehen kann, die besonders Neulinge evtl. nicht erwarten.

Zitat von: MaggieMay am November 13, 2016, 23:15:54So tritt bspw. ein Fehler auf, wenn man ein Objekt löscht, ehe man es neu erstellt, wenn es gar nicht existiert. In diesem Fall kann einem der Fehler herzlich egal sein.  :)
Das ist ein schönes Beispiel. :-)
Was ist denn in genau diesem Fall, wenn das Objekt nicht gelöscht werden kann, weil es gerade geöffnet ist? Ein generelles On Error Resume Next, ohne weitere Unterscheidung des genauen Fehlers, wird dann vermutlich durchaus negative Auswirkungen auf die Stabilität der Anwendung bzw. ihre Funktionalität haben.
Titel: Re: VBA-Probleme nach ACCDE-Erstellung
Beitrag von: DF6GL am November 14, 2016, 08:01:03
Hallo,

@MaggieMay:


es ist ja kein "kategorischer Imperativ"   ;)   
Nur wenn die Sachlage derart unklar ist, muss diese Situation angesprochen und untersucht werden.   

Zudem sehe ich es so, dass "On Error Resume Next" sehr sparsam angewendet werden sollte(!) und auch nur dort, wo aller Voraussicht nach nur eine bestimmte und vernachlässigbare/irrelevante Fehlersituation auftreten kann(!), z. B. beim Aufruf eines Berichtes, der keine Daten enthält und dadurch wieder geschlossen wird

(Aber ich will hier nicht auch eine Glaubensdiskussion anzetteln, wie in anderen Threads gehandhabt  8) :) :) :) )