Gernot Adams
2003-11-20 13:46:57 UTC
Hallo Allerseits,
ich habe in mehreren Datenbanken, die auf einem Server liegen, die
Möglichkeit eingebaut, sie zentral zu schließen (im Falle von
Verwaltungsarbeiten u.ä.). Dazu startet in jedem Datenbank-Frontend
automatisch ein ausgeblendetes Formular, welches in bestimmten Abständen
(Zeitgeber) ein Kontrollkästchen in einer Tabelle abfragt. Ist das
Kontrollkästchen markiert, wird die Datenbank über DoCmd.Quit geschlossen.
Code-mäßig sieht das so aus:
Private Sub Form_Timer()
If (DLookup("KillApplication", "tbl_UID")) = -1 Then
DoCmd.Quit
End If
End Sub
Ich habe ebenfalls in jedem Formular der Datenbank eine Standardabfrage, die
im Falle von Datenänderungen abfragt, ob die Änderungen gespeichert werden
sollen. Das sieht so aus:
Dim strMsg As String
strMsg = "Data has changed."
strMsg = strMsg & "@Do you wish to save the changes?"
strMsg = strMsg & "@Click Yes to Save or No to Discard changes."
If MsgBox(strMsg, vbQuestion + vbYesNo, "Save Record?") = vbYes Then
'do nothing
Else
DoCmd.RunCommand acCmdUndo
End If
Jetzt mein Problem: wenn ich versuche, eine geöffnete Datenbank über das
Aktivieren des o.g. Kontrollkästchens zu schließen während in diese
Datenbank gerade ein neuer Datensatz eingetragen oder ein bestehender
geändert wird, dann wird die Datenbank natürlich nicht geschlossen, sondern
es erscheint erst noch die Sicherungsabfrage. Und wird Diese nicht
beantwortet, bleibt die Datenbank offen.
Eigentlich ist das ja auch völlig korrekt und das "Abschießen" einer DB
nicht gerade gentlemen-like. Aber ich hätte halt doch gerne die Möglichkeit,
in der gerade geschilderten Situation die Datenbank zu schließen und dabei
automatisch die die Sicherungsabfrage mit "Nein" zu beantworten.
Falls es keine Möglichkeit gibt, eine Datenbank so zu schließen, daß alle
wie auch immer gearteten anderen Anweisungen, Ereignisse oder Rückfragen
übergangen werden, dann denke ich, müßte der Code der Sicherungsabfrage so
erweitert werden, daß das "DoCmd.RunCommand acCmdUndo"-Ereignis entweder auf
Knopfdruck oder nach Ablauf einer Eingabefrist ausgelöst wird.
Kann mir jemand verraten, wie ich das anstellen könnte?
Danke für die Hilfe und Gruß
Gernot
ich habe in mehreren Datenbanken, die auf einem Server liegen, die
Möglichkeit eingebaut, sie zentral zu schließen (im Falle von
Verwaltungsarbeiten u.ä.). Dazu startet in jedem Datenbank-Frontend
automatisch ein ausgeblendetes Formular, welches in bestimmten Abständen
(Zeitgeber) ein Kontrollkästchen in einer Tabelle abfragt. Ist das
Kontrollkästchen markiert, wird die Datenbank über DoCmd.Quit geschlossen.
Code-mäßig sieht das so aus:
Private Sub Form_Timer()
If (DLookup("KillApplication", "tbl_UID")) = -1 Then
DoCmd.Quit
End If
End Sub
Ich habe ebenfalls in jedem Formular der Datenbank eine Standardabfrage, die
im Falle von Datenänderungen abfragt, ob die Änderungen gespeichert werden
sollen. Das sieht so aus:
Dim strMsg As String
strMsg = "Data has changed."
strMsg = strMsg & "@Do you wish to save the changes?"
strMsg = strMsg & "@Click Yes to Save or No to Discard changes."
If MsgBox(strMsg, vbQuestion + vbYesNo, "Save Record?") = vbYes Then
'do nothing
Else
DoCmd.RunCommand acCmdUndo
End If
Jetzt mein Problem: wenn ich versuche, eine geöffnete Datenbank über das
Aktivieren des o.g. Kontrollkästchens zu schließen während in diese
Datenbank gerade ein neuer Datensatz eingetragen oder ein bestehender
geändert wird, dann wird die Datenbank natürlich nicht geschlossen, sondern
es erscheint erst noch die Sicherungsabfrage. Und wird Diese nicht
beantwortet, bleibt die Datenbank offen.
Eigentlich ist das ja auch völlig korrekt und das "Abschießen" einer DB
nicht gerade gentlemen-like. Aber ich hätte halt doch gerne die Möglichkeit,
in der gerade geschilderten Situation die Datenbank zu schließen und dabei
automatisch die die Sicherungsabfrage mit "Nein" zu beantworten.
Falls es keine Möglichkeit gibt, eine Datenbank so zu schließen, daß alle
wie auch immer gearteten anderen Anweisungen, Ereignisse oder Rückfragen
übergangen werden, dann denke ich, müßte der Code der Sicherungsabfrage so
erweitert werden, daß das "DoCmd.RunCommand acCmdUndo"-Ereignis entweder auf
Knopfdruck oder nach Ablauf einer Eingabefrist ausgelöst wird.
Kann mir jemand verraten, wie ich das anstellen könnte?
Danke für die Hilfe und Gruß
Gernot