|
Zur Herstellung der Mehrbenutzerfähigkeit geht die BDE für dBASE- und Paradox-Tabellen unterschiedliche Wege. Damit dBASE-Tabellen durch die BDE kontrolliert werden können, fügt die BDE ein für darüberliegende Schichten unsichtbares Feld namens "_DBASELOCK" ein, in dem der Lock-Status für jeden Datensatz eingetragen werden kann.
| |
|
Durch Verwaltung des Lock-Status wird es der BDE ermöglicht, einen Datensatz nur dem Benutzer zur Editierung freizugeben, der die Sperrung veranlaßte. Andere Benutzer können solange keine Änderugen an den Daten vornehmen, bis die Sperrung wieder aufgehoben wurde.
| Lock-Status |
|
Aktiviert wird dieser Mechanismus jedoch erst dann, wenn die Tabelle entsprechend eingerichtet wird. Dazu ist das Kästchen "Infogröße" bzw. "Info Size" in der englischen Version anzukreuzen:
Abbildung 5/2.5.1.4-1: Datensatzsperre für dBASE-Tabelle einrichten
| Lock-Mechanismus aktivieren |
|
Die Größe des Info-Feldes kann zwischen 8 und 24 Zeichen umfassen; per Default schlägt die BDE 16 Zeichen vor. Das Feld wird wie folgt benutzt:
|
Bytes
|
Inhalt
|
|
1-2
|
geben an, ob ein Benutzer Daten geändert hat
|
|
3-5
|
Zeitpunkt, zu dem die Sperre gesetzt wurde
|
|
6-x
|
Name des Benutzers, der die Sperre veranlaßte
|
Nachdem eine Tabelle einmal mit einem Lock-Informationsfeld eingerichtet ist, braucht sich der Entwickler nicht mehr dafür zu interessieren; die BDE verwaltet alle Locks automatisch und intern.
| Lock-Informationen |
|
Für Paradox-Tabellen kann die BDE einen völlig anderen Weg beschreiten, der in der Datenbankstruktur begründet ist. Paradox-Tabellen benötigen kein zusätzliches Lock-Informationsfeld für jeden Datensatz, sondern kommunizieren mit einer zusätzlichen Tabelle, in der alle Sperren registriert werden. Diese Tabelle wird als "Netzwerk-Kontrolldatei" bezeichnet und besitzt den Namen "PDOXUSRS.NET".
| Locking in Paradox-Tabellen |
|
Da die Netzwerk-Kontrolldatei allen Benutzern für Schreibzugriffe zugänglich sein muß, muß die Datei in einem Pfad abgelegt werden, auf den alle potentiellen Anwender Schreibrechte haben. Zum Vorgeben des entsprechenden Verzeichnisses gibt es zwei mögliche Wege
- Einrichten über BDE-Konfigurationsprogramm
- Setzen des Laufwerks aus einer Anwendung heraus
| Netzwerk-Kontrolldatei |
|
Standardmäßig erfolgt das Einrichten der Netzwerk-Kontrolldatei über das BDE-Konfigurationsprogramm. Die hier getroffene Vorgabe ist dann für alle Anwendungen gültig und braucht nicht jedesmal neu eingestellt zu werden. Zur Einstellung des Verzeichnisses ist das BDE-Konfigurationsprogramm zu starten. Auf der Seite "Treiber" erscheinen nach dem Anklicken des Treibers "Paradox" die zugehörigen Parameter auf der rechten Seite des Dialogfensters:
Abbildung 5/2.5.1.4-2: Verzeichnis für Netzwerk-Kontrolldatei für Paradox-Tabellen festlegen
| Einrichten über BDE-Konfigurationsprogramm |
|
Das gewünschte Verzeichnis wird in der Zeile "NET DIR" eingetragen. Hier darf nur ein Verzeichnis gewählt werden, für das alle potentiellen Anwender volle Rechte haben. Diese sind:
- Schreibrecht
- Leserecht
- Datei Erzeugen
Besitzt eine Anwendung diese Rechte nicht, so kommt es beim Programmstart zu einer allgemeinen Schutzverletzung.
| Verzeichnis eintragen |
|
Alternativ kann das Vorgeben des Verzeichnisses für die Netzwerk-Kontrolldatei auch aus einer laufenden Anwen-dung heraus erfolgen. Der entsprechende Aufruf muß jedoch abgesetzt werden, bevor eine Tabelle geöffnet wird. Auch hier gilt, daß der einzusetzende Pfad so gewählt werden muß, daß für alle potentiellen Anwender die notwendigen Rechte vorhanden sind.
Die Einstellung selbst erfolgt über das Property NetFileDir der nichtvisuellen Komponente TSession. Dieses Property ist wie folgt definiert:
| Setzen des Laufwerks aus einer Anwendung heraus |
AnsiString NetFileDir;
| Property NetFileDir |
|
Es muß somit ein Delphi-String im AnsiString-Format anstelle der üblichen C-Strings werden. Zugewiesen wird dem Property NetFileDir das komplette Verzeichnis, das die Netzwerk-Kontrolldatei PDOXUSRS.NET aufnehmen soll. Hierbei ist der abschließende Backslash für das Root-Verzeichnis ohnehin zwingend erforderlich und für alle übrigen Verzeichnisse optional aber empfohlen.
Nachdem das Verzeichnis für die Netzwerk-Kontrolldatei spezifiziert ist, können mehrere Anwender auf die Paradox-Datenbanken zugreifen. Die BDE regelt alle Zugriffe automatisch und intern.
Arbeiten mit Mehrbenutzer-Datenbanken
| Wertzuweisung |
|
Die Arbeit mit Mehrbenutzer-Datenbanken unterscheidet sich kaum von dem Einsatz lokaler Single-Station-Datenbanken. Der Entwickler muß jedoch darauf vorbereitet sein, daß der Zugriff auf einen Datensatz zum Zwecke der Bearbeitung fehlschlägt, weil ein anderer Benutzer gerade den gleichen Datensatz bearbeitet. In diesem Fall muß die Anwendung die von der BDE ausgelöste Exception abfangen und behandeln, indem beispielsweise eine entsprechende Message angezeigt wird.
| Zugriff auf Mehrbenutzer-Datenbanken
|