Verwenden von Datensitzungen

Um sicherzustellen, dass jeder Benutzer in einer Mehrbenutzerumgebung über ein stabiles und exaktes Duplikat der Arbeitsumgebung verfügt, und um weiterhin sicherzustellen, dass mehrere Instanzen eines Formulars unabhängig voneinander verwendet werden können, ermöglicht Visual FoxPro das Arbeiten mit Datensitzungen.

Eine Datensitzung ist ein Abbild der aktuellen, dynamischen Arbeitsumgebung. Sie können sich eine Datensitzung wie eine miniaturisierte Datenumgebung vorstellen, die im Innern der einen offenen Visual FoxPro-Sitzung auf dem einen Computer ausgeführt wird. Jede Datensitzung umfasst Folgendes:

  • Eine Kopie der Elemente in der Datenumgebung des Formulars.
  • Cursor, die die offenen Tabellen, ihre Indizes und Beziehungen repräsentieren.

Das Konzept einer Datensitzung ist einfach zu verstehen, wenn Sie sich vorstellen, was passiert, wenn das gleiche Formular zur gleichen Zeit auf verschiedenen Arbeitsstationen in einer Mehrbenutzeranwendung geöffnet wird. In diesem Fall wird auf jeder Arbeitsstation eine separate Visual FoxPro-Sitzung ausgeführt, und daher verfügt auch jede Arbeitsstation über ihre eigene Gruppe von Arbeitsbereichen: Cursor, die offene Basistabellen, Indizes und Beziehungen repräsentieren.

Wenn Sie jedoch mehrere Instanzen des gleichen Formulars in einem einzigen Projekt auf einem Computer innerhalb der gleichen Visual FoxPro-Sitzung öffnen, greifen diese Formulare gemeinsam auf die Standard-Datensitzung zu und stellen so eine einzige, dynamische Arbeitsumgebung dar. Jede Instanz des in der gleichen Visual FoxPro-Sitzung geöffneten Formulars verwendet die gleiche Gruppe von Arbeitsbereichen und Aktionen in einer Instanz des Formulars, bei denen der Datensatzzeiger in einem Arbeitsbereich bewegt wird, wirken sich automatisch auch auf die anderen Instanzen dieses Formulars aus.

Verwenden von privaten Datensitzungen

Wenn Sie mehr Steuerungsmöglichkeiten über Mehrfachinstanzen eines Formulars haben möchten, können Sie private Datensitzungen implementieren. Verwendet das Formular private Datensitzungen, erstellt Visual FoxPro für jede Instanz des von Ihrer Anwendung erstellten Formulars, des Formularsatzes oder des Symbolleisten-Steuerelements (Toolbar) eine neue Datensitzung. Jede private Datensitzung umfasst:

  • Eine separate Kopie jeder Tabelle, jedes Indexes und jeder Beziehung in der Datenumgebung des Formulars.
  • Eine unbegrenzte Anzahl an Arbeitsbereichen.
  • Datensatzzeiger für jede Kopie jeder Tabelle, die von den Basistabellen des Formulars unabhängig sind.

Die Anzahl der verfügbaren Datensitzungen ist lediglich durch den verfügbaren Arbeitsspeicher und den Speicherplatz begrenzt.

Sie implementieren private Datensitzungen, indem Sie die DataSession-Eigenschaft des Formulars einstellen. Die DataSession-Eigenschaft verfügt über zwei Einstellungen:

  • 1 - Default Data Session (die Standardeinstellung)
  • 2 - Private Data Session

Standardmäßig ist die DataSession-Eigenschaft eines Formulars auf 1 gesetzt.

So aktivieren Sie private Datensitzungen

Wählen Sie eine der folgenden Optionen:

  • Setzen Sie die DataSession-Eigenschaft des Formulars im Formular-Designer auf 2 - Private Data Session.

    - Oder -

  • Setzen Sie die DataSession-Eigenschaft im Code auf 2.

    Geben Sie beispielsweise ein:

    frmFormName.DataSession = 2
    

    Anmerkung   Sie können die DataSession-Eigenschaft nur zur Entwurfszeit festlegen. Zur Laufzeit ist die DataSession-Eigenschaft schreibgeschützt.

Arbeitet ein Formular mit privaten Datensitzungen, verwendet jede Instanz des auf einem einzelnen Computer während einer einzelnen Visual FoxPro-Sitzung geöffneten Formulars seine eigene Datenumgebung. Das Verwenden privater Datensitzungen ist mit dem gleichzeitigen Ausführen des gleichen Formulars auf verschiedenen Arbeitsstationen vergleichbar.

Mehrere äquivalente Datensitzungen

Identifizieren von Datensitzungen

Jede private Datensitzung wird separat identifiziert. Sie können den Inhalt jeder Datensitzung im Fenster Datensitzung betrachten. Sie können die Beschreibung der Datensitzung auch über Befehle im Load-Ereigniscode ändern.

Sie können außerdem die Kennung jeder Datensitzung anzeigen, indem Sie die DataSessionID-Laufzeiteigenschaft verwenden. Im folgenden Beispiel wird die DataSessionID-Eigenschaft eines Formulars mit Namen frmMyForm angezeigt:

DO FORM frmMyForm
? frmMyForm.DataSessionID

Wenn Sie das Formular mit Hilfe der Klausel NAME aktivieren, können Sie den Namen des Formulars verwenden, um auf die DataSessionID-Eigenschaft zuzugreifen, wie in nachstehendem Code gezeigt:

DO FORM MyForm NAME one
? one.DataSessionID

Die DataSessionID-Eigenschaft wird nur zur Identifikation einer bestimmten Datensitzung benötigt. Sie sollten jedoch die DataSessionID der Instanz eines Formulars möglichst nicht ändern, da datengebundene Steuerelemente ihre Datenquellen verlieren, wenn Sie die DataSessionID ändern.

Aktualisieren von Daten mit Hilfe von Mehrfachinstanzen eines Formulars

Während private Datensitzungen separate Arbeitsbereiche erzeugen, die wiederum separate Kopien der offenen Tabellen, Indizes und Beziehungen eines Formulars enthalten, verweist jede Kopie eines Formulars auf die gleichen zugrunde liegenden Basistabellen und Basisindexdateien. Aktualisiert ein Benutzer einen Datensatz in einer Instanz eines Formulars, wird auch die Basistabelle, auf die das Formular verweist, aktualisiert. Sie sehen die Änderungen, die von anderen Instanzen des Formulars aus vorgenommen wurden, wenn Sie sich zu dem geänderten Datensatz bewegen.

Sperrungen, die an Datensätzen oder Tabellen in einer privaten Datensitzung vorgenommen wurden, werden von anderen privaten Datensitzungen respektiert. Hat beispielsweise der Benutzer von Datensitzung 1 einen Datensatz bereits gesperrt, kann der Benutzer in Datensitzung 2 diesen Datensatz nicht noch einmal sperren. Hat der Benutzer in Sitzung 1 eine Tabelle exklusiv geöffnet, kann der Benutzer in Datensitzung 2 diese Tabelle nicht öffnen. Indem die Sperrungen, die seitens anderer Datensitzungen vorgenommen wurden, respektiert werden, schützt Visual FoxPro die Integrität von Aktualisierungen an zugrunde liegenden Basistabellen.

Anpassen der Umgebung einer Datensitzung

Da Datensitzungen den Gültigkeitsbereich bestimmter SET-Befehle steuern, können Sie private Datensitzungen verwenden, um benutzerdefinierte SET-Befehlseinstellungen innerhalb einer einzelnen Visual FoxPro-Sitzung einzurichten.

So ist beispielsweise der SET EXACT-Befehl, der die Regeln für den Vergleich von Zeichenfolgen unterschiedlicher Länge vorgibt, in seiner Gültigkeit auf die aktuelle Datensitzung beschränkt. Die Standardeinstellung für SET EXACT ist OFF, womit festgelegt wird, dass sich Ausdrücke, um als gleichwertig zu gelten, Zeichen für Zeichen entsprechen müssen, bis das Ende der Ausdrücke auf der rechten Seite erreicht ist. Mitunter kann es gewünscht sein, "unscharfe" Suchläufe oder Äquivalenzsuchläufe zu ermöglichen, indem für SET EXACT für die Standarddatensitzung die OFF-Einstellung beibehalten wird. Die Anwendung kann jedoch ein bestimmtes Formular enthalten, bei dem exakte Übereinstimmungen erforderlich sind. Sie könnten nun die DataSession-Eigenschaft für das Formular, bei dem exakte Entsprechungen erforderlich sind, auf 2 setzen, um private Datensitzungen zu ermöglichen, und anschließend SET EXACT für dieses Formular auf ON setzen. Indem Sie nun den SET-Befehl lediglich für das Formular ausgeben, das private Datensitzungen verwendet, behalten Sie die globalen Visual FoxPro-Sitzungseinstellungen bei und ermöglichen gleichzeitig benutzerdefinierte Sitzungseinstellungen für ein bestimmtes Formular.

Außer Kraft setzen der automatischen Zuweisung von privaten Datensitzungen

Wenn für ein Formular private Datensitzungen verwendet werden, werden Änderungen, die Sie in einem Formular an den Daten vornehmen, nicht automatisch in anderen Instanzen des gleichen Formulars wiedergegeben. Wenn Sie möchten, dass alle Instanzen eines Formulars auf die gleichen Daten zugreifen und dass Änderungen an allgemeinen Daten sofort widergespiegelt werden, können Sie die automatische Zuweisung von Datensitzungen außer Kraft setzen.

So setzen Sie die automatische Zuweisung von Datensitzungen außer Kraft

  • Verwenden Sie einen der folgenden Befehle:

    SET DATASESSION TO 1
    

    - Oder -

    SET DATASESSION TO
    

Beide Befehle ermöglichen, dass die Standard-Datensitzung über das Fenster Befehl und den Projekt-Manager gesteuert werden können.

Siehe auch

Sperren von Daten | Zwischenspeichern von Daten | Programmieren für freigegebenen Zugriff | Formular-Designer | DataSession | DataSessionID