Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2007.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Lernen Sie, welche Sperrmechanismen Sie beim Bearbeiten von Daten in Access-Formularen verwenden können.

Techniken

Formulare, DAO

Voraussetzungen

Access 2000 oder höher

Beispieldatei

Sperrungen.mdb

Shortlink

463

Sperrmechanismen in Access-Formularen

André Minhorst, Duisburg

Im Mehrbenutzerbetrieb kommt es mitunter zur gleichzeitigen Bearbeitung eines Datensatzes durch mehrere Mitarbeiter. In diesem Fall brauchen Sie eine sinnvolle Strategie, um entweder das gleichzeitige Ändern zu verhindern oder aber den Benutzern eine Hilfe zur Lösung von Schreibkonflikten an die Hand zu geben. Beides liefert der vorliegende Beitrag.

Wenn man vom Mehrbenutzerzugriff in Zusammenhang mit Access spricht, handelt es sich entweder um eine in Front- und Backend aufgeteilte Datenbank, deren Bestandteile jeweils als .mdb-Datei daherkommen oder um ein Access-Frontend, das seine Daten von einer SQL-Server-Datenbank bezieht. Dieser Beitrag beschränkt sich auf die zuerst genannte Variante und auf den Einsatz von Sperrmechanismen in Access-Formularen.

In der in diesem Beitrag zugrunde gelegten Konfiguration liegt das Backend auf einem Server, der von allen Rechnern mit der Frontend-Datenbank gut erreicht werden kann. Die Bearbeitung der Daten erfolgt außerdem ausschließlich über gebundene Formulare, andere Zugriffe wie etwa per DAO oder ADO werden nicht berücksichtigt.

Sperren von Datensätzen

Das Sperren von Datensätzen soll Inkonsistenzen von Daten verhindern, die durch das gleichzeitige Ändern durch mehrere Bearbeiter entstehen. Ein Beispiel dafür ist der Lagerbestand eines Artikels, der gleichzeitig in zwei Bestellungen aufgenommen wird: Beide Bestellvorgänge gehen dabei von dem gleichen Lagerbestand aus und speichern jeweils den neuen Lagerbestand, der aus der Differenz der alten Anzahl und der bestellten Anzahl besteht. Dabei speichert das System das Ergebnis des Bearbeiters, der zuletzt auf OK geklickt hat.

Um dies zu verhindern, benötigt man Mechanismen, die frühestens beim Öffnen des Datensatzes durch mehr als einen Benutzer und spätestens beim Schließen durch den zweiten Benutzer Alarm schlagen.

Sperrungsarten

Access unterstützt mehrere Sperrungsarten, die sich im Umfang der gesperrten Daten und im Auslösezeitpunkt des Mechanismus unterscheiden.

Für den Umfang der gesperrten Daten beim Bearbeiten eines Datensatzes gibt es folgende Varianten:

  • Keine Sperrung
  • Alle Datensätze der aktuellen Tabelle
  • Speicherseite, in der sich der aktuelle Datensatz befindet (Jet speichert Daten immer in Blöcken à 4 Kilobyte; daher die Bezeichnung Speicherseite. Wie viele Datensätze vom Sperren einer Speicherseite betroffen sind, hängt von deren Felddatentypen und dem Inhalt ab)
  • Nur der aktuelle Datensatz

Optimistisches Sperren

Der Auslösezeitpunkt hängt unmittelbar vom Umfang der Sperrung ab: Ohne Sperrung spricht man von optimistischer Sperrung, die wie folgt ausgelöst wird:

  • Benutzer A öffnet einen Datensatz zum Bearbeiten.
  • Benutzer B öffnet den gleichen Datensatz (oder je nach Sperrungsumfang einen Datensatz derselben Speicherseite oder derselben Tabelle).
  • Benutzer A speichert den geänderten Datensatz.
  • Benutzer B speichert den geänderten Datensatz.

Nun tritt ein Schreibkonflikt auf, weil Access feststellt, dass ein Datensatz gespeichert werden soll, dessen Anfangszustand nicht mit dem aktuellen Zustand übereinstimmt.

Für den Benutzer, der die letzte Änderung speichern möchte, gibt es nun drei Möglichkeiten:

  • Speichern seiner Version des Datensatzes,
  • Kopieren seiner Version in die Zwischenablage, um diese nach Prüfung zu verwenden oder zu verwerfen oder
  • Verwerfen der eigenen Änderungen.

Pessimistisches Sperren

Wenn eine Sperrung im Formular aktiv ist, braucht der erste Benutzer den Datensatz nur zu öffnen, damit weitere Benutzer diesen Datensatz oder – falls Sperrung auf Seitenebene aktiviert ist – auch weitere Datensätze nicht mehr bearbeiten können.

Interessant ist hier der Zeitpunkt, zu dem die anderen Benutzer erfahren, dass sich ein Datensatz in Bearbeitung befindet: Dieser hängt nämlich vom Aktualisierungsintervall ab, das die Eigenschaft Anzeigeaktualisierungsintervall in den Access-Optionen festlegt. Sobald ein Benutzer den Wert eines Feldes verändert und damit die Feldeigenschaft auf „dirty“ gesetzt hat, dauert es noch ein Weilchen, bis diese Information auf allen Rechnern, deren Access-Instanz ebenfalls diesen Datensatz anzeigt, erscheint. Je kleiner Sie dieses Intervall einstellen, desto mehr belastet dies natürlich das Netz.

Mit Sperrungen experimentieren

Die in diesem Beitrag vorgestellten Techniken können Sie auch ohne die Aufteilung in Front- und Backend ausprobieren. Sie benötigen einfach nur eine Datenbank mit einer Beispieltabelle sowie zwei Formulare. Wenn Sie denselben Datensatz im ersten Formular und im zweiten Formular ändern und optimistisches Sperren aktiviert haben (also die Eigenschaft Datensätze sperren den Wert Keine Sperrungen aufweist), erhalten Sie denselben Effekt, als wenn Sie dies in zwei unabhängigen Frontends ausführen, die auf das gleiche Backend zugreifen. Beachten Sie aber, dass bei dieser Konfiguration einige Verzögerungen wegfallen, die beim Netzwerkbetrieb auftreten.

Sperren im Formular

In Formularen entscheidet grundsätzlich die Eigenschaft Datensätze sperren über den anzuwendenden Sperrmechanismus (s. Abb. 1). Dabei wirkt sich die Einstellung Bearbeiteter Datensatz in Abhängigkeit von einer weiteren Eigenschaft unterschiedlich aus (ab Access 2000). Diese Eigenschaft legt man in den Access-Optionen unter Weitere/DB mit Sperrung auf Datensatzebene öffnen fest (s. Abb. 2). Nach dem Einstellen dieser Option müssen Sie die Anwendung zunächst erneut öffnen, danach sperrt Access entweder nur noch den aktuell bearbeiteten Datensatz oder die Speicherseite, die diesen Datensatz enthält (und damit gegebenenfalls auch andere Datensätze).

pic001.tif

Abb. 1: Einstellungen eines Formulars für die unterschiedlichen Arten der Datensatzsperrung

pic002.tif

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.