none
Beenden von ACCESS-DB

    Frage

  • Hallo ...

    Bin ein Neuling hier und habe eine Frage zu Access. Ich habe eine Access-DB, die ich über den Befehl "Application.Quit" in einer SUB beenden kann. Das funktioniert ohne Probleme. Wenn ich in der gleichen Datenbank aber rechts oben das "x" anklicke, hängt sich die DB beim Schliessen in einer Art Endlosschleife auf. Ich kann sie dann nur noch über den Taskmanager manuell schliessen.

    Das Problem hatte ich schon unter Access 2003 und jetzt immer noch unter Access 2007

    Kann mir da jemand weiterhelfen? Vielen Dank im Voraus.

    Gerhard

    Mittwoch, 17. November 2010 16:56

Antworten

  • Gerhard_1957 wrote:

    Bin ein Neuling hier und habe eine Frage zu Access. Ich habe eine
    Access-DB, die ich über den Befehl "Application.Quit" in einer SUB
    beenden kann. Das funktioniert ohne Probleme. Wenn ich in der
    gleichen Datenbank aber rechts oben das "x" anklicke, hängt sich die
    DB beim Schliessen in einer Art Endlosschleife auf. Ich kann sie dann
    nur noch über den Taskmanager manuell schliessen.

    Das Problem hatte ich schon unter Access 2003 und jetzt immer noch
    unter Access 2007
    ...

    Es ist nicht ganz klar, was du meinst mit:

    hängt sich die DB beim Schliessen in einer Art Endlosschleife auf

    Was genau passiert da und siehst du vor dir?

    Falls du meinst, dass die DB sich schließt, aber Access offen bleibt,
    dann gibt es ein paar bekannte Situationen und Ursachen, bei denen
    das passiert: s. http://www.donkarl.com?FAQ7.5


    Servus
    Karl
    *******
    Access-FAQ: http://www.donkarl.com

    Mittwoch, 17. November 2010 17:04

Alle Antworten

  • Gerhard_1957 wrote:

    Bin ein Neuling hier und habe eine Frage zu Access. Ich habe eine
    Access-DB, die ich über den Befehl "Application.Quit" in einer SUB
    beenden kann. Das funktioniert ohne Probleme. Wenn ich in der
    gleichen Datenbank aber rechts oben das "x" anklicke, hängt sich die
    DB beim Schliessen in einer Art Endlosschleife auf. Ich kann sie dann
    nur noch über den Taskmanager manuell schliessen.

    Das Problem hatte ich schon unter Access 2003 und jetzt immer noch
    unter Access 2007
    ...

    Es ist nicht ganz klar, was du meinst mit:

    hängt sich die DB beim Schliessen in einer Art Endlosschleife auf

    Was genau passiert da und siehst du vor dir?

    Falls du meinst, dass die DB sich schließt, aber Access offen bleibt,
    dann gibt es ein paar bekannte Situationen und Ursachen, bei denen
    das passiert: s. http://www.donkarl.com?FAQ7.5


    Servus
    Karl
    *******
    Access-FAQ: http://www.donkarl.com

    Mittwoch, 17. November 2010 17:04
  • Hallo Karl

    Access bleibt geöffnet und das zuvor angezeigte Formular "flackert". Die DB wird nicht geschlossen. Es sieht aus als würde eine Endlosschliefe durchlaufen. Kannst Du damit etwas anfangen?

    Danke und Gruss

    Gerhard_1957


    Gerhard_1957
    Mittwoch, 17. November 2010 17:15
  • Gerhard_1957 wrote:


    Access bleibt geöffnet und das zuvor angezeigte Formular "flackert".
    Die DB wird nicht geschlossen. Es sieht aus als würde eine
    Endlosschliefe durchlaufen. Kannst Du damit etwas anfangen?
    ...

    Passiert das nur, wenn dieses spezielle Formular offen ist, oder
    auch mit anderen Formularen bzw. gibt's vielleicht ein "Hauptformular",
    das immer geöffnet ist?

    Falls es sich an einem bestimmten Formular festmachen lässt:
    Gibt es Code im Ereignis "Beim Entladen" des Formulares
    und wenn ja, wie sieht der aus?

    Hast du vielleicht eine Schließ-Kontrolle für die DB eingebaut
    ähnlich wie beschrieben in http://www.donkarl.com?FAQ1.12?


    Servus
    Karl
    *******
    Access-FAQ: http://www.donkarl.com

    Mittwoch, 17. November 2010 17:29
  • Gerhard_1957 wrote:

    Passiert das nur, wenn dieses spezielle Formular offen ist, oder
    auch mit anderen Formularen bzw. gibt's vielleicht ein "Hauptformular",
    das immer geöffnet ist?

    Falls es sich an einem bestimmten Formular festmachen lässt:
    Gibt es Code im Ereignis "Beim Entladen" des Formulares
    und wenn ja, wie sieht der aus?

    Hast du vielleicht eine Schließ-Kontrolle für die DB eingebaut
    ähnlich wie beschrieben in http://www.donkarl.com?FAQ1.12?


    Servus
    Karl
    *******
    Access-FAQ: http://www.donkarl.com

    Soweit ich festgestellt habe, passiert das bei jedem Formular.

    Ja, ich habe einen Code der steuert, was beim Schliessen eines Formulars passiert. Und zwar ist es so, dass ich beim Schliessen eines Formulars über eine Variable (NextFRM) angebe, welches Form sich als nächstes öffnen soll. Der Code zum Öffnen des nächsten Formulars sieht dann so aus:

    Public Sub Oeffne_Formular()
    On Error GoTo lblError
    
      If FLAG_LogOff = False Then
        DoCmd.OpenForm NextFrm
      End If
      
    lblWeiter:
      Exit Sub
    

    In dem SUB, mit dem ich die DB "normal" beende, wird FLAG_LogOff auf True gesetzt. Damit komme springe ich dann beim "normalen" Schliessen über die If-Abfrage und es wird kein Formular geöffnet.

    Ist das verständlich? ... ich hoffe ...

    Danke schon mal für Deine Unterstützung.

    Gruss

    Gerhard_1957


    Gerhard_1957
    Mittwoch, 17. November 2010 17:43
  • Hallo Karl

    Ich bin's nochmal. Eine Schliess-Kontrolle habe ich nicht eingebaut. Aber Du hast mich auf eine Idee gebracht. Ich werde eine solche Kontrolle einbauen. Damit verhindere ich, dass der User die DB über das "x" schliessen kann und den "normalen" Weg über das SUB mit "Application.Quit" benutzen muss. Der funktioniert ja.

    Aber wenn Du noch eine bessere Idee haben solltest, bin ich Dir für einen Tip dankbar.

    Gruss

    Gerhard_1957


    Gerhard_1957
    Mittwoch, 17. November 2010 17:52
  • Gerhard_1957 wrote:

    ...
    Ja, ich habe einen Code der steuert, was beim Schliessen eines
    Formulars passiert. Und zwar ist es so, dass ich beim Schliessen
    eines Formulars über eine Variable (NextFRM) angebe, welches Form
    sich als nächstes öffnen soll. Der Code zum Öffnen des nächsten Formulars sieht dann so aus:

    Public Sub Oeffne_Formular()
    On Error GoTo lblError
    
     If FLAG_LogOff = False Then
      DoCmd.OpenForm NextFrm
     End If
    
    lblWeiter:
     Exit Sub
    

    In dem SUB, mit dem ich die DB "normal" beende, wird FLAG_LogOff auf True gesetzt. Damit komme springe ich dann beim "normalen" Schliessen über die If-Abfrage und es wird kein Formular geöffnet. ...

    Na, dann hätten wir wohl schon die Problemursache gefunden.
    Warum machst du denn diese Abhängigkeit Öffnen/Schließen?

    Vielleicht lässt sich das anders regeln. Es gibt halt kaum beeinflussbare Möglichkeiten und Situationen, in denen sich ein Formular schließt. D.h. du gibst einen Teil der Kontrolle an Access bzw. Windows ab und hast damit eine potentielle Korruptionsquelle für die DB.


    Servus Karl
    *********
    Access-FAQ: http://www.donkarl.com

    Mittwoch, 17. November 2010 18:15
  • Hallo Karl

    Danke für die Antwort. Ich denke, dass ich wohl tatsächlich den Ablauf von Schliessen des einen und Öffnen des nächsten Formulars nochmal überarbeiten muss. Mit Ausnahme der Situation, die ich beschrieben habe, hat dieser Ablauf bis jetzt gut funktioniert. D.h. ich konnte beim Schliessen eines Formulars durch Aufrufen der SUB Oeffne_Formular über die Variable NextFrm angeben, welches Formular sich im Anschluss öffnen soll. 

    Das klappt natürlich nicht, wenn ich die Applikation schliessen will (und dabei natürlich kein weiteres FRM öfnnen will). Darum musste ich für diesen Fall im SUB mit FLAG_Logoff dafür sorgen, dass das Docmd.OpenForm übersprungen wird.

    Wie gesagt, das klappt soweit einwandfrei, bis auf den Fall wo ich die DB über "x" zumache.

    Habe zwischenzeitlich den Tipp aus donkarl FAQ 1.12 mit dem versteckten Formular eingebaut und das klappt prima. Aber ich werde mir noch Gedanken über eine andere Steuerung des Ablaufs von Schliessen und Öffnen machen.

    Herzlichen Dank für Deine Unterstützung.

    Gruss Gerhard_1957


    Gerhard_1957
    Mittwoch, 17. November 2010 18:43
  • Hallo Gerhard
    Versuch's mal so:
    Public Sub Oeffne_Formular()
    On Error GoTo lblError
    
     If FLAG_LogOff = False And Me.Name <> NextForm Then
      DoCmd.OpenForm NextFrm
     End If
     
    lblWeiter:
     Exit Sub
    End Sub
    
    Falls Me.Name nicht existiert, dann versuch's mit Screen.ActiveFrom.Name.
    Macht ja keinen Sinn das Formular zu öffnen, das bereits geöffnet ist (ausser wenn Du es mit einem Filter oder anderen Parametern öffnen möchtest)
    Gruss
    Henry
     
     

    Public Sub Oeffne_Formular()
    On Error GoTo lblError
    
     If FLAG_LogOff = False Then
      DoCmd.OpenForm NextFrm
     End If
     
    lblWeiter:
     Exit Sub
    

    In dem SUB, mit dem ich die DB "normal" beende, wird FLAG_LogOff auf True gesetzt. Damit komme springe ich dann beim "normalen" Schliessen über die If-Abfrage und es wird kein Formular geöffnet.

    Ist das verständlich? ... ich hoffe ...

    Danke schon mal für Deine Unterstützung.

    Gruss

    Gerhard_1957


    Gerhard_1957
    Donnerstag, 18. November 2010 04:50
  • Hallo Henry

    Danke für den Tipp. Habe aber inzwischen den Rat von Karl befolgt und habe die gesamte Öffnungs- und Schliess-Prozedur nochmals überarbeitet und eine ganz andere Lösung programmiert. Jetzt klappt´s auch so, wie ich mir das vorstelle.

    Danke aber für Deinen Tipp. Scheinbar findet man hier ja wirlich nützliche Anregungen. Vielleicht kann ich ja auch mal was brauchbares beitragen und mich so revanchieren.

    Gruss

    Gerhard_1957


    Gerhard_1957
    Sonntag, 28. November 2010 21:03