chinesisch - vereinfacht   deutsch   Englisch (USA)   französisch   holländisch   portugiesisch - iberisch   spanisch  

Home




How to Split a Replicated Access 97 Database (German)

Wie man eine replizierte Access 97 Datenbank aufteilt

Von Jeffrey Streutker, MCSE

Unerfahrene Access-Datenbank-Entwickler wissen oft nicht, dass die Replikation von Entwurfsänderungen an Objekten außer Tabellen dafür bekannt ist, Probleme zu verursachen. Das ist enttäuschend, weil es zunächst aussieht, als sei Replikation der beste Weg die komplette Access-Anwendung zu vertreiben, und immerhin unterstützt Microsoft das.

Das Problem ist, dass die Jet-Replikation nur im Gedanken an Datentabellen entworfen wurde. Das geschah deshalb, weil Jet-Replikation v.a. für Visual-Basic-Anwendungen gedacht war, bei denen nur die Daten in einer *.mdb-Datei gespeichert werden. Die meisten Tests fanden mit dieser Konstellation statt. Was Access 97 betrifft, ging man stets davon aus, dass ein guter Entwickler immer nur eine bereits aufgeteilte Datenbank in ein Replikat umwandeln würde und somit nur die Tabellen repliziert würden. Eine Einführung zum Thema der Aufteilung einer Access-Datenbank, finden Sie in Kapitel 15, Abschnitt 3, des Dokumentes "Erstellen von Anwendungsprogrammen mit Microsoft Access 97", das sich auf der Access 97 CD befindet.

Wenn Sie eine Datenbank vor der Replikation nicht aufteilen, werden Sie bemerken, dass sie sich in ihrer Größe aufbläht. Das passiert, weil jede einzelne Änderung, die Sie z.B. an einem Formular oder Modul vornehmen, in einer versteckten Tabelle festgehalten wird und so zu einer Information wird, die repliziert werden muss. Stellen Sie sich vor, Sie machen 30 Versuche, den Code in einem Modul zum korrekten Arbeiten zu bringen. Jede dieser Änderungen (alle außer der letzten sind unnötig) wird an alle Replikate geschickt. In der Praxis hatten Entwickler, die vor dem Replizieren nicht aufgeteilt hatten, ein lästiges Problem: nach einiger Zeit (vielleicht sogar erst nach Monaten) in der die Replikation funktioniert hatte, versagte ein Modul plötzlich seinen Dienst oder ein Formular konnte nicht mehr geöffnet werden.

Wie können Sie also eine Datenbank aufteilen, die bereits repliziert wurde? Ich schlage dazu folgende Schritte vor.

  1. Verwenden Sie nicht den Assistenten zur Datenbankaufteilung. Der teilt nämlich eine Datenbank genau in der falschen Weise auf, so dass sie nicht mehr länger replizierbar ist - er verlegt alle Tabellen in eine neue Datei und lässt die restlichen Objekte im Replikat. Richtig wäre es hier aber, die Datentabellen im Replikat zu lassen und alle anderen Objekte in eine neue, unreplizierte Datenbankdatei auszulagern. Auf diese Art bleibt das Backend als Teil der aktuellen Replikatgruppe replizierbar und das Frontend ist jetzt eine eigenständige Datenbank, die einfach für jeden Anwender kopiert werden kann.
  2. Stellen Sie sicher, dass alle Ihre Replikate synchronisiert sind, damit sie aktuelle Daten haben, falls Sie den Design Master korrumpieren.
  3. Erstellen Sie eine neue Access-Datenbankdatei für das Frontend. Nach dem Vorbild von Microsoft können Sie "_fe" an den Datenbanknamen anhängen, obwohl es eigentlich egal ist, wie sie sie benamsen.
  4. Öffnen Sie diese neue Datei und importieren Sie alle Abfragen, Formulare, Berichte, Makros und Module aus dem Design Master. Wenn Sie ein Übersichts-Formular verwenden, dass Sie mit dem Übersichtsmanager erzeugt haben, dann müssen Sie auch die Übersichtstabelle importieren.
  5. Erzeugen Sie Verknüpfungen zu den Tabellen des Design Masters.
  6. Wenn Sie die Datenbank gesichert haben, dann haben Sie die Einträge der Berechtigungen für alle Objekte verloren, die Sie in Schritt 4 und 5 importiert oder verknüpft haben. Deshalb öffnen Sie den Designmaster und kopieren Sie diese Berechtigungseinträge in die neue Datei (d.h. in das Frontend).
  7. Jetzt müssen Sie im Frontend Code hinzufügen, der die Verknüpfungen zu den lokalen Replikaten des Anwenders erneuert. Hilfe dazu finden Sie in der Datenbank "Beispiellösungen" für Entwickler, die als Beispieldatenbank bei Access 97 mitgeliefert wird. Wählen Sie dazu "Verknüpfen von Tabellen beim Programmstart" in der Kategorie "Verwenden mehrerer Datenbanken".
  8. Verteilen Sie das Frontend an alle Ihre Anwender. Merken Sie sich, dass diese Datei niemals repliziert werden sollte. Sie machen einfach Kopien für jeden, der sie braucht. Sagen Sie Ihren Anwendern, dass sie ab jetzt das Frontend verwenden sollen. Wenn Sie sicher sind, dass sie das Frontend verwenden, können Sie weitermachen, indem Sie den Design Master in ein Backend konvertieren (die nächsten beiden Schritte) damit beim nächsten Synchronisieren ihre Replikate ebenfalls Backends werden.
  9. Öffnen Sie den Design Master und löschen Sie alle Objekte, die Sie in Schritt 4 importiert haben.
  10. Komprimieren Sie den Design Master zweimal, dann synchronisieren Sie ihn mit allen anderen Replikaten.

Anmerkung: Wenn Sie den Namenskonventionen folgen möchten, die Microsoft in seinem Assistenten zur Datenbankaufteilung verwendet, dann müssen Sie an den Dateinamen Ihres Backend-Replikates "_be" anhängen. Die sicherste Methode dafür ist die Verwendung des Replikat-Verschieben-Befehls im Replikationsmanager.

Jeffrey Streutker ist IT-Manager bei HVAC (Heating, Ventilation, and Air Conditioning) Controls Company in der Gegend von Toronto. Er ist Elektronik-Ingenieur, der auch Computerwissenschaften und Mathematik an der Universtität von Waterloo, Kanada, studiert hat und seit 1985 eine Menge Programmierarbeit in vielen verschiedenen Sprachen geleistet hat. Sein aktuelles Projekt ist die Konvertierung eines großen, auf Lotus Notes basierenden Datenbanksystems nach Access 97, inklusive Replikation, um Außendienst-Techniker mit Datenbanken für die Bereiche Wartung und Vertrieb zu unterstützen, sowie einer Kundendatenbank mit Fax-Client/Server-Unterstützung.

Zurück zu Quellen