Office: (Office 2000) DoCmd.Close acForm, "Formular"

Helfe beim Thema DoCmd.Close acForm, "Formular" in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, DoCmd.Close acForm, "Formular" verursacht auch dann keinen Fehler, wenn "Formular" nicht geöffnet ist. Ich weiß nicht, ob dieses Verhalten... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Frank200, 11. Februar 2008.

  1. DoCmd.Close acForm, "Formular"


    Hallo,

    DoCmd.Close acForm, "Formular" verursacht auch dann keinen Fehler, wenn "Formular" nicht geöffnet ist. Ich weiß nicht, ob dieses Verhalten ein Zufall oder gewollt ist (Access 2000).
    Natürlich könnte ich mit SysCmd(acSysCmdGetObjectState, .... den Status vorher prüfen, jedoch scheint dies nicht wirklich notwendig zu sein.

    Spricht irgendetwas dagegen, auf SysCmd.... zu verzichten und einfach nur den Close-Befehl zu schreiben? Ich denke da z.B. an evtl. Unverträglichkeiten unter Access 2007. Hat jemand Erfahrungen diesbezüglich?

    :)
     
    Frank200, 11. Februar 2008
    #1
  2. FW
    FW
    ... wo ist Dein Problem? Nach DoCmd.Close acForm, "Formular" kannst'e sicher sein, dass das Formular nicht mehr geöffnet ist, egal, ob es existiert, ob es geöffnet war oder nicht...
     
  3. das ist schon klar. Ich meinte, ob Konfigurationen denkbar sind, bei denen es doch zu einem Fehler führt, wenn DoCmd.Close .... ein Formular schließen will, daß nicht geöffnet ist.
     
    Frank200, 13. Februar 2008
    #3
  4. FW
    FW

    DoCmd.Close acForm, "Formular"

    ... nö...
     
  5. ansonsten kann das so gut wie immer mit einem On Error Resume Next vor dem Close-Befehl ignoriert werden
     
  6. [OT]

    ... immer diese "On Error Resume Next"-Programmierung. *wink.gif*

    Ich halte das für eine große Gefahrenquelle, um später Logik-Fehler nicht mehr zu finden.
    Was ist so schlimm wenn man zuvor prüft, ob eine später auszuführenden Anweisung überhaupt durchführbar ist?
    Ok, im Beispiel von Docmd.Close acForm ist das nicht notwendig, doch möglich ist es allemal.
    ab Ac2000: CurrentProject.AllForms("FormName").IsLoaded

    Ich entwickle meine Anwendungen z.B. immer mit der VBA-Einstellung: "bei jedem Fehler anhalten"

    [/OT]
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Josef P., 13. Februar 2008
    #6
  7. \@Josef: Im Prinzip hast Du ja Recht. IA mache ich auch immer eine komplette Fehlerbehandlung, nur eben in ganz einfachen Fällen verzichte ich gern mal darauf; zumindest sofern es sich nicht auf andere Proc auswirkt und ein Fehler mitgeschleppt werden kann (ansonsten wird´s unlustig) *upps
     
  8. DoCmd.Close acForm, "Formular"

    Code:
    ...deren Freund ich leider auch bin. *wink.gif*
    Allerdings schmeiße ich das Statement auch nicht einfach an den Anfang der Routine, sondern vor die betreffende Zeile, und schalte unmittelbar danach wieder die korrekte Fehlerbehandlung ein:
    ...
    On Error Resume Next
    Call FunctionWithPotentialErrror
    On Error Goto Fehlerbehandlung
    ...

    Soll nicht den erhobenen Zeigefinger von Josef relativieren!
    Wenn es sinnvoll ist und ohne größenen Aufwand realisierbar, dann sollte so eine Bedingung schon vor dem zweifelhaften Aufruf stehen.

    Ciao, Sascha
     
    Sascha Trowitzsch, 13. Februar 2008
    #8
  9. \@Smaug: ich meinte gar nicht eine komplette Fehlerbehandlung vs. Resume next, sondern ich finde eine Prüfung, ob eine Fehler auftreten kann besser, als später auf einen Fehler zu reagieren.
    Wenn es auf Höchstgeschindigkeit ankommt, kann natürlich eine Fehlerbehandlung im Ausnahmefall schneller sein, als als eine Prüfung. Aber wer unter Access Höchstgeschwindigkeit erwartet setzt mit VBA das falsche Werkzeug für die Programmierung ein. *wink.gif*

    Als Beispiel:
    Code:
    ich nutze lieber so etwas:
    Code:
     
    Josef P., 14. Februar 2008
    #9
  10. \@Sascha / Josef: Threads #8 + 9: genau auch meine Meinung !! *Smilie
    Ich meinte das On Error Resume Next genau in dem von Sascha gezeigten Zusammenhang mit der speziellen Zeile
     
  11. Hallo,
    im Prinzip teile ich die Ansicht von Josef auch. Lieber vorher prüfen, als nachher auf einen Fehler reagieren.

    Doch darum ging es mir garnicht. Meine Frage war im Grunde viel simpler gedacht. Hätte sie vielleicht besser formulieren sollen.
    Ich wills daher nochmals mit anderen (etwas laienhaften) Worten versuchen.

    Wenn die Tatsache, daß DoCmd.Close acform,"FormX" bei geschlossenem FormX keinen Fehler verursacht, ein "definiertes", gewolltes Verhalten ist, dann kann ich mir alle Prüfungen incl. Fehlerbehandlungstricks sparen, weil ich davon ausgehe, daß das in Nachfolgeversionen auch so ist.
    Wenn der Fehler jedoch nur deshalb ausbleibt, weil die MS Programmierer diesen Fall übersehen haben und Access 'zufälligerweise' einfach mit der nächsten Zeile weiterarbeitet, dann würde ich vorher immer prüfen. Denn vielleicht sind spätere Versionen nicht so tolerant.

    Würde z.B. in der Onlinehilfe der Satz stehen "Wenn Sie mit DoCmd.Close versuchen, eine nicht geöffnetes Formular zu schließen, tritt kein Fehler auf und Access fährt mit dem nachfolgenden Kommando fort", dann gäbe es diesen Thread nicht.
    Sorry für die Haarspalterei. So wichtig ist das Ganze nun auch wieder nicht.
     
    Frank200, 14. Februar 2008
    #11
  12. Diese Haarspalterei finde ich durchaus berechtigt.
    Ich kann z.B. ein Recordset auch nicht schließen, wenn es nicht offen ist.
    Somit verlasse ich mich zumindest bei solchen - mir "unlogischen" erscheinenden - Verhaltensweisen nicht darauf, dass das bei der Nachfolgeversion auch noch so ist.
    z.B. wurde vor nicht zu langer Zeit hier im Forum aufgezeigt, dass Aktualisierungen von berechneten Feldern, die sich Werte direkt aus der Datenherkunft des Forms holen, nicht mehr sofort durchgeführt werden, wie bei den Vorgängerversionen. ... das könnte man jetzt als Bug bezeichnen, es kann aber auch passieren, dass dies zum "Feature" ernannt wird. *biggrin.gif*
     
    Josef P., 14. Februar 2008
    #12
  13. DoCmd.Close acForm, "Formular"

    Hallo Josef,
    danke für Deine Hinweise. Ich werde die sicherere Variante wählen.
    Zumindest habe ich mit CurrentProject.AllForms("FormName").IsLoaded wieder eine Alternative zu SysCmd(acSysCmdGetObjectState,...
    Das hatte ich irgendwie vergessen.
     
    Frank200, 14. Februar 2008
    #13
  14. Noch ein Tipp:
    kapsel die Access-Methode in einer eigenen Sub. Dann kannst du später jederzeit etwas ergänzen.

    z.B.:
    Code:
     
    Josef P., 14. Februar 2008
    #14
  15. gute Idee.
    Ciao
     
    Frank200, 14. Februar 2008
    #15
Thema:

DoCmd.Close acForm, "Formular"

Die Seite wird geladen...
  1. DoCmd.Close acForm, "Formular" - Similar Threads - DoCmd Close acForm

  2. Laufzeitfehler '1004': Die Methode 'Close' für das Objekt '_Workbook' ist fehlgeschl.

    in Microsoft Excel Hilfe
    Laufzeitfehler '1004': Die Methode 'Close' für das Objekt '_Workbook' ist fehlgeschl.: Hallo zusammen, ich habe ein Makro, welches früher (ältere Office-Version) einwandfrei durchlief. Dabei wähle ich aus einem verschiedene Dateien, die dann durch die Ausführung des Makros...
  3. DoCmd RunSql liefert Fehler in einer Funktion

    in Microsoft Access Hilfe
    DoCmd RunSql liefert Fehler in einer Funktion: Hallo Leute. Mit der folgenden Code in "Private Sub" gibt es kein Problem. Alles läuft super. Ich bruche diesen Code als Function, damit ich es aus einem Makro ausführen lassen möchte (oder...
  4. DoCmd Export nach Excel 2016

    in Microsoft Access Hilfe
    DoCmd Export nach Excel 2016: Guten Morgen! Ich möchte gerne erreichen, dass die Abfrage "Zusammenfassung" nach Schließen eines Formulars nach Excel exportiert wird. Dazu habe ich folgenden Code: Code: Private Sub...
  5. DoCmd Click nächste Registerkarte

    in Microsoft Access Hilfe
    DoCmd Click nächste Registerkarte: Hallo Leute, ich habe ein Navigationsformular mit mehreren Reitern. Im 1. Formular gibt man Daten ein. Am Ende dieses Formulars ist dann ein Knopf der die Datenspeichert und über eine Select Case...
  6. DoCmd -> Laufzeitfehler 2486

    in Microsoft Access Hilfe
    DoCmd -> Laufzeitfehler 2486: ich habe bei einer Datenbank immer wieder mal das Problem das keine "DoCmd" Anweisungen ausgeführt werden können. Es erscheint der Laufzeitfehler 2486. Dieses hat dann auch zur Folge das sich...
  7. Excel Datei über VBA öffnen und schließen ohne speichern

    in Microsoft Excel Hilfe
    Excel Datei über VBA öffnen und schließen ohne speichern: Hallo Leute, ich habe mal wieder ein Problem und kann mir nicht so richtig Erklären wodran es liegt. Ich bin mir sicher, dass es für euch eine Kleinigkeit seien wird. Hier mal mein Code...
  8. Auto-Save-Before-Close bei schreibgeschützen Dateien umgehen

    in Microsoft Excel Hilfe
    Auto-Save-Before-Close bei schreibgeschützen Dateien umgehen: Hallo ihr Lieben, ich habe folgendes Problem: Ich habe in meiner *.xlsx einen kleinen Code im VBA-Editor unter "DieseArbeitsmappe" um meine Arbeitsmappe vor dem Schließen automatisch zu...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden