Remotefahren einer benutzerdefinierten Access-Anwendung

Erweitert: Erfordert Expertenkenntnisse für Codierung, Interoperabilität und Mehrbenutzerfähigkeiten.

Dieser Artikel gilt nur für eine Microsoft Access-Datenbank (.mdb oder .accdb).

Zusammenfassung

Manchmal müssen Sie möglicherweise Wartungsaufgaben für eine Microsoft Access-Datenbank ausführen, z. B. Komprimieren oder Reparieren, Erstellen von Sicherungskopien oder Vornehmen von Entwurfsänderungen. Viele dieser Vorgänge erfordern, dass alle Benutzer die Datenbank beenden. Es gibt jedoch keine integrierte Methode, um Benutzer zum Beenden von Microsoft Access zu zwingen. Und es ist keine gute Idee, den Benutzer einfach von Netzwerklösungen zu trennen. Dies kann dazu führen, dass die Datenbank beschädigt wird.

In diesem Artikel wird ein Ansatz beschrieben, mit dem Sie eine Front-End-Access-Datenbankanwendung ordnungsgemäß herunterfahren können. Sie können auch viele dieser Konzepte verwenden, um die Datenbank zu komprimieren oder zu reparieren, Sicherungskopien zu erstellen usw.

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionsfähigkeit sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Die Microsoft Support-Spezialisten können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind.

Weitere Informationen

Funktionsweise der Lösung

Die Lösung funktioniert wie folgt. Auf einem Server befindet sich eine Datei in einem Ordner. Diese Datei kann beliebig benannt werden. Für diese Lösung wird eine Datei namens chkfile.ozx verwendet. Wenn diese Datei umbenannt oder gelöscht wird, benachrichtigt sie die Front-End-Access-Anwendung, dass sie geschlossen werden muss.

Es wird ein Formular erstellt, das geöffnet wird, wenn Benutzer die Front-End-Datenbankanwendung starten. Dieses Formular überprüft, ob die Datei in einem festgelegten Intervall auf dem Server vorhanden ist. Hierfür werden die TimerInterval-Eigenschaft und das OnTimer-Ereignis verwendet.

Wenn die Datei gefunden wird, geschieht nichts. Wenn die Datei nicht gefunden wird, wird im Formular ein weiteres Formular angezeigt, um den Benutzer zu warnen, dass die Datenbank in einem bestimmten Zeitraum automatisch geschlossen wird.

Hinweis

Diese Lösung verwendet die MsgBox-Funktion nicht, um den Benutzer zu warnen. Die MsgBox-Funktion wartet auf Benutzereingaben, bevor code ausgeführt wird. Dies würde den Zweck der Lösung verfehlen.

Um Clientsitzungen ordnungsgemäß zu schließen, benennt diese Lösung die datei um, die überprüft wird. Wenn alles abgeschlossen ist, was erreicht werden muss, benennt diese Lösung die Datei wieder in den ursprünglichen Namen um. Dadurch werden die Benutzer darüber informiert, dass sie die Front-End-Datenbank erneut starten können.

Dieser Prozess kann auch automatisiert werden, um einen unbeaufsichtigten Betrieb mithilfe eines geplanten Diensts auf dem Server bereitzustellen, der chkfile.ozx zu bestimmten Zeiten umbenannt.

Schritte zum Erstellen eines Beispielszenarios

Um die Funktionsweise dieser Lösung zu veranschaulichen, benötigen Sie Folgendes:

  • Ein Ordner auf Ihrer Festplatte mit dem Pfad C:\MyData.
  • Eine leere Datei. Diese Lösung überprüft, ob diese Datei vorhanden ist.
  • Ein geteiltes Datenbankdesign mit den Tabellen in einer Back-End-Datenbankdatei und Links zu dieser Tabelle in der Front-End-Datenbank. Die Front-End-Datenbank enthält den Code, der in einem festgelegten Intervall überprüft, ob die Datei vorhanden ist, und dann den Benutzer warnt.

Erstellen des Ordners für die Beispielanwendung

Erstellen Sie einen Ordner im Stammverzeichnis von Laufwerk C, und nennen Sie ihn MyData.

Erstellen der leeren Textdatei

  1. Erstellen Sie eine neue Textdatei im Ordner MyData, und benennen Sie sie chkfile.txt.
  2. Benennen Sie die Textdatei so um, dass sie über die Erweiterung ozx (chkfile.ozx) verfügt. Wenn Sie dazu aufgefordert werden, bestätigen Sie, dass Sie die Dateierweiterung ändern möchten.

Erstellen der Back-End-Datenbank

  1. Erstellen Sie eine neue Datenbank im Ordner C:\MyData, und benennen Sie sie Northwind_Be.mdb.
  2. Importieren Sie die Tabelle Customers aus der Beispieldatenbank Northwind in die datenbank Northwind_Be.mdb. (Standardmäßig befindet sich Northwind unter C:\Programme\Microsoft Office\Office10\Samples.)
  3. Schließen Sie die Datenbank.

Erstellen der Front-End-Datenbank

  1. Erstellen Sie eine weitere neue Datenbank, und nennen Sie sie Northwind_Fe.mdb.
  2. Verknüpfen Sie die Tabelle Customers aus der Northwind_Be.mdb-Datenbank mit dem neuen Northwind_Fe.mdb
  3. Erstellen Sie ein AutoForm basierend auf der verknüpften Customers-Tabelle, und speichern Sie es als frmCustomers. Schließen Sie dieses Formular.

Erstellen des Formulars mit Code, der überprüft, ob die Datei vorhanden ist

  1. Erstellen Sie ein ungebundenes Formular, und speichern Sie es unter dem Namen frmAppShutDown. In einer Produktionsdatenbank wäre dieses Formular normalerweise immer geöffnet, aber nicht sichtbar. Für dieses Beispiel kann es wie gewohnt geöffnet bleiben.
  2. Legen Sie die TimerInterval-Eigenschaft des Formulars auf 60000 Millisekunden fest. Dies entspricht einer Minute. (Für Ihre eigene Lösung können Sie dieses Zeitintervall erhöhen oder ableben.)
  3. Klicken Sie in Microsoft Office Access 2003 oder früheren Versionen von Access in der Entwurfsansicht des Formulars frmAppShutDown im Menü Ansicht auf Code. Klicken Sie in Microsoft Office Access 2007 in der Entwurfsansicht des Formulars frmAppShutDown auf die Registerkarte Entwurf, und klicken Sie dann in der Gruppe Tools auf Code anzeigen. Geben Sie den folgenden Code ein, oder fügen Sie ihn ein:
Option Explicit
Dim boolCountDown As Boolean
Dim intCountDownMinutes As Integer

Private Sub Form_Open(Cancel As Integer)
    ' Set Count Down variable to false
    ' on the initial opening of the form.
    boolCountDown = False
End Sub

Private Sub Form_Timer()
On Error GoTo Err_Form_Timer
    Dim strFileName As String
    strFileName = Dir("c:\MyData\chkfile.ozx")
    If boolCountDown = False Then
        ' Do nothing unless the check file is missing.
        If strFileName <> "chkfile.ozx" Then
            ' The check file is not found so 
            ' set the count down variable to true and
            ' number of minutes until this session
            ' of Access will be shut down.
            boolCountDown = True
            intCountDownMinutes = 2
        End If
    Else
        ' Count down variable is true so warn
        ' the user that the application will be shut down
        ' in X number of minutes.  The number of minutes
        ' will be 1 less than the initial value of the
        ' intCountDownMinutes variable because the form timer
        ' event is set to fire every 60 seconds
        intCountDownMinutes = intCountDownMinutes - 1
        DoCmd.OpenForm "frmAppShutDownWarn"
        Forms!frmAppShutDownWarn!txtWarning = "This application will be shut down in approximately " & intCountDownMinutes & " minute(s).  Please save all work."
        If intCountDownMinutes < 1 Then
            ' Shut down Access if the countdown is zero,
            ' saving all work by default.
            Application.Quit acQuitSaveAll
        End If
    End If

Exit_Form_Timer:
    Exit Sub

Err_Form_Timer:
    Resume Next
End Sub

  1. Speichern Sie das Formular, und schließen Sie es dann.

Erstellen des Formulars, das dazu dient, den Benutzer zu warnen

Hinweis

Verwenden Sie die MsgBox-Funktion nicht, um den Benutzer zu warnen. Die MsgBox-Funktion wartet auf Benutzereingaben, bevor code ausgeführt wird. Dies würde den Zweck der Lösung verfehlen.

  1. Erstellen Sie ein ungebundenes Formular, und nennen Sie es frmAppShutDownWarn. Fügen Sie das folgende Textfeld-Steuerelement hinzu:

    Name: txtWarning
    Type: Textbox
    
  2. Speichern und schließen Sie das Formular.

  3. Erstellen Sie ein Makro, das das Formular frmCustomer und das Formular frmAppShutDown beim Start öffnet. Nennen Sie das Makro autoexec.

  4. Schließen Sie die Datenbank, und öffnen Sie sie erneut.

  5. Benennen Sie chkfile.ozx in chkfile.old um.

Zeitpunkt von Lösungsereignissen

Hinweis

Alle folgenden Zeiten sind ungefähr, und sie beginnen nach der Umbenennung von chkfile.ozx.

  • Eine Minute oder weniger: Northwind_FE.mdb wird feststellen, dass die zu überprüfende Datei fehlt.
  • Zwei Minuten: In Northwind_FE.mdb wird ein Formular geöffnet, in dem Sie darüber informiert werden, dass die Datenbank in einer Minute geschlossen wird.
  • Drei Minuten: Northwind_FE.mdb wird automatisch geschlossen und speichert die gesamte Arbeit.