Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Doming am Juli 21, 2025, 08:42:54

Titel: Was ist falsch an DoCmd?
Beitrag von: Doming am Juli 21, 2025, 08:42:54
Zitat von: Knobbi38 am Juni 29, 2025, 22:04:14also DoCmd Aufrufe weitestgehend vermeiden, dort wo es möglich ist.
Zitiert aus diesem Post (https://www.access-o-mania.de/forum/index.php?msg=167560)

Hallo,

der Satz schießt mir irgendwie quer, was ist der Nachteil von DoCmd?

Gruß
 Doming
Titel: Re: Was ist falsch an DoCmd?
Beitrag von: Knobbi38 am Juli 21, 2025, 12:22:08
Hallo Doming,

mit DoCmd rufst du aus der "VBA-Welt" Makroaktionen auf; du wandelst damit zwischen zwei Programmiersystemen, die ein wenig parallel arbeiten. In den meisten Fällen läßt sich eine Makroaktion auch in VBA lösen. Eines der mehr bekannteren Beispiele dazu ist DoCmd.RunSQL, welches relativ einfach in VBA durch CurrentDB.Execute ersetzt werden kann. Es gibt aber auch Ausnahmen, wie z.B. DoCmd.Open... usw., welche nicht vollständig durch VBA ersetzt werden können.

Ein gravierender Nachteil von DoCmd ist, es "wirkt" immer auf das gerade aktive Objekt und innerhalb der gleichen Applikation. Man muß also ständig aufpassen, ob der jeweilige Kontext für DoCmd noch gültig ist.
Das es ausgeschrieben eigentlich Application.DoCmd heißen müßte, wird oft unterschlagen. Zum Beispiel wird oft der Fehler gemacht, daß explizit eine andere DB geöffnet wird und dann sollen mit DoCmd dort Änderungen vorgenommen werden, was natürlich so nicht geht.

Meine Empfehlung ist nach wie vor, daß man DoCmd und "embbeded" Makros, so weit es geht, vermeiden sollte.

Gruß Ulrich
Titel: Re: Was ist falsch an DoCmd?
Beitrag von: Doming am Juli 21, 2025, 14:18:40
Danke für die Ausführungen Ulrich, das war mir tatsächlich neu.

Gibt es irgendwo eine Aufstellung der ersetzbaren, bzw. nicht ersetzbaren Kommandos?
Titel: Re: Was ist falsch an DoCmd?
Beitrag von: Beaker s.a. am Juli 21, 2025, 15:20:09
Hallo Doming,

Eine Aufstellung kenne ich nicht, - vielleicht die Regulars. Man kann aber an Hand
des Objektmodels eigene Methoden von Objekten suchen, die das gleiche bewirken.
Ein Beispiel fällt mir grade nicht ein, da ich nur (noch) die Open-Methoden des
DoCmd-Objekts verwende.

gruss ekkehard
Titel: Re: Was ist falsch an DoCmd?
Beitrag von: Knobbi38 am Juli 21, 2025, 15:43:25
Da gibt es schon noch ein paar mehr, welche man nicht so einfach ersetzen kann, z.B. PrintOut, OuputTo, um nur einige zu nennen.

Aber auch das sollte nicht vergessen werden: DoCmd.CancelEvent sollte immer durch VBA ersetzt werden.
Cancel = TrueErstens wird das wahrscheinlich als konstanter Ausdruck in VBA kompiliert und zweitens kann DoCmd.CancelEvent nicht für alle Events angewendet werden. Das ist für Anfänger zunächst nicht so offensichtlich und führt dann zu schwer auffindbaren und sporadischen Fehlern.


Grüße Ulrich