Die Nutzung einer Access-Datenbank mit mehreren Anwendern ist ohne großen Aufwand möglich. Etwas komplizierter sind da schon Pflege und Wartung. So ist beispielsweise das wichtige regelmäßige Komprimieren nur dann möglich, wenn kein Anwender angemeldet ist. Sie müssen damit also entweder bis nach Feierabend warten oder alle infrage kommenden Personen per Mail oder Telefon benachrichtigen. Unsere Lösung: Erweitern Sie Ihre Datenbanken um ein eigenes kleines Kommunikationssystem. Wartungsarbeiten, neue Funktionen, Sicherheitshinweise und andere wichtige Informationen können Sie damit zuverlässig allen Anwendern mitteilen, denn die Nachrichten erscheinen automatisch beim Öffnen der Datenbank oder auch während damit gearbeitet wird.
Unsere Lösung basiert auf zwei Tabellen, die im Back-End untergebracht sind und in die einzelnen Front-End-Datenbanken eingebunden werden müssen, sodass ein gemeinsamer Zugriff möglich ist. Die Tabelle „MBUMsgText“ speichert die einzelnen Nachrichten mit einer eindeutigen Nachrichten-ID, die beim Senden einer Nachricht automatisch generiert wird.
Die Tabelle „MBUMsgSeenBy“ hält anhand dieser Nachrichten-ID und einer pro Arbeitsplatz individuell vergebenen Anwender-ID fest, welcher Anwender die einzelnen Nachrichten bereits gelesen hat, damit nicht immer wieder dieselben Nachrichten angezeigt werden. In den einzelnen Front-Ends kommt ein Formular „MBUMsg – Form“ zum Einsatz, das über „AutoExec“ beim Öffnen minimiert abgelegt wird. Das Formular prüft die Tabellen kontinuierlich auf ungelesene Nachrichten und dient der Anzeige, Verwaltung und Erstellung neuer Nachrichten.
Für die Prüfung auf neue Nachrichten ist die Zeitgeber-Routine des Formulars zuständig. Sie nimmt bei jedem Aufruf (alle 5 Sekunden) im Hintergrund einen Abgleich der Tabellen vor. Dabei werden in einer Schleife alle Nachrichten in der Tabelle „MBU Msg Text“ daraufhin geprüft, ob dazu in der Tabelle „MBUMsgSeenBy“ bereits ein „Gelesen“-Eintrag mit der ID des aktuellen Anwenders vorhanden ist. Sollte das nicht der Fall sein, hat er die Nachricht noch nicht gelesen.
Das Formular wird dann im Vordergrund mit der neuen Nachricht angezeigt. Über eine Schaltfläche GELESEN bestätigt der Anwender die Nachricht. Dabei wird zunächst in der Tabelle „MBUMsg Seen By“ über eine Kombination aus Nachrichten- ID und Anwender-ID festgehalten, dass die Nachricht gelesen wurde, und das Formular anschließend wieder minimiert abgelegt. Beim nächsten Aufruf der Zeitgeber-Routine findet diese nun einen „Gelesen“-Eintrag für die letzte Nachricht in der Tabelle „MBUMsgSeenBy“, sodass sie nicht noch einmal als neue Nachricht angezeigt wird. Wie das im Detail realisiert ist, erfahren Sie weiter unten. Beginnen wir damit, die Lösung in Ihre Datenbanklösungen einzubinden.
Um die Lösung in Ihre Back-End-/Front- End-Lösung einzubinden, gehen Sie wie folgt vor:
1. Öffnen Sie das Back-End und übertragen Sie die Tabellen „MBUMsgText“ und „MBUMsgSeenBy“ über das Menü DATEI-EXTERNE DATEN-IMPORTIEREN aus unserer Beispieldatenbank und verlassen Sie die Datei wieder. Nach dem Download installieren Sie die Datenbank und öffnen sie. Alternativ können Sie auch die Beispieldatenbank in das Verzeichnis des Back-Ends kopieren, den Schreibschutz entfernen und die Tabellen „MBUMsgText“ und „MBUMsgSeenBy“ von dort aus in die Front- End-Dateien über das Menü DATEI EXTERNE DATEN-TABELLEN VERKNÜPFEN einbinden.
2. Öffnen Sie der Reihe nach alle Front- End-Datenbanken und führen Sie dort jeweils die folgenden Aktionen durch.
3. Übertragen Sie das Formular „MBUMsgForm“ über das Menü DATEI EXTERNE DATEN-IMPORTIEREN aus der Beispieldatenbank in das Front-End.
4. Binden Sie die Tabellen „MBUMsgText“ und „MBUMsgSeenBy“ aus dem Back-End in das Front-End über das Menü DATEI-EXTERNE DATENTABELLEN VERKNÜPFEN ein.
5. Öffnen Sie das Formular „MBUMsgForm“ im Entwurfsmodus und wählen Sie das Menü ANSICHT-CODE an, um die VBA-Entwicklungsumgebung zu öffnen.
6. Wählen Sie das Menü EXTRAS-VERWEISE an und setzen Sie eine Referenz auf „Microsoft DAO 3.6x Object Library“ bzw. „Microsoft DAO 3.5x Object Library“ (Access 97).
7. Im allgemeinen Teil des Formulars wird eine Konstante „cstrSeenByID“ deklariert. Dieser Konstanten weisen Sie eine pro Arbeitsplatz individuell vergebene Identifikation zu. Das kann zum Beispiel ein Anwendername, ein Rechnername oder eine Kombination aus beidem sein. Wichtig ist in jedem Fall, dass diese ID eindeutig ist und nicht doppelt vergeben wird! Der Inhalt dieser Konstanten wird in allen Bereichen über eine Funktion „GetSeenByID()“ ausgelesen. Wenn die Anwender sich individuell anmelden, können Sie in dieser Funktion die erste Zuweisung auskommentieren und die Zuweisung des Funktionsergebnisses auf „=CurrentUser()“ setzen. Als Anwender-ID wird dann der jeweilige Anwendername anstelle der Konstanten „cstrSeenByID“ verwendet:
8. Speichern Sie die Änderungen am Formular anschließend und verlassen Sie den Formularentwurf.
9. Legen Sie ein Makro „AutoExec“ an und definieren Sie eine Aktion „ÖffnenFormular“ mit den folgenden, vom Standard abweichenden Parametern: Formularname: MBUMsgForm
Fenstermodus: Symbol
Ist bereits ein Makro „AutoExec“ vorhanden, fügen Sie die oben genannte Aktion am Anfang hinzu.
10. Speichern Sie das Makro beziehungsweise die Änderungen und verlassen Sie den Makroentwurf.
11. Für das nächste Front-End beginnen Sie wieder mit Schritt 3.
In Zukunft wird nun bei jedem Start der einzelnen Front-End-Datenbanken automatisch das Formular „MBUMsgForm“ geladen, das im Hintergrund auf neue Nachrichten wartet oder zum Senden neuer Nachrichten genutzt werden kann.