Virtuelle Tabellen

Previous  Next

 

 

 

Letzte Änderung 09.11.2009

Virtuelle Tabellen

 

Virtuelle Tabellen sind Tabellen, die bei Programmstart im Arbeitsspeicher des Anwender-Rechners (Client) erzeugt werden. Meistens enthalten Virtuelle Tabellen anfangs noch keine Daten und sind völlig leer. Manchmal enthalten Virtuelle Tabellen jedoch bereits bestimmte Werte, die als Grundeinstellung dienen (Default-Werte).

 

 

» Abfrage-Ergebnisse in Virtueller Tabelle «

Virtuelle Tabellen spielen in XDEV 2 eine ganz zentrale Rolle, denn das Ergebnis einer Datenbankabfrage (Resultset) wird immer in einer Virtuellen Tabelle gespeichert. Von dort aus lassen sich die Daten dann sehr leicht auf dem Bildschirm ausgeben, z.B. als Table, Tree oder in einem Formular. Dazu ist jeweils nur eine einzige Anweisung nötig. Dadurch ist dieses Konzept sehr viel einfacher und mit sehr viel weniger Programmieraufwand verbunden als die Verarbeitung von Resultsets direkt in Java.

 

clip0517

Datenbank-Tabelle                                                             Virtuelle Tabelle                                                                   GUI-Komponente

 

 

 

Die Treffer-Datensätze einer Datenbankabfrage werden immer in eine Virtuelle Tabelle gespeichert. Von

 

 

 

» Speichern immer über Virtuelle Tabelle «

Beim Speichern von Formularen, Tabellen, Trees, Listen etc., werden die Daten, die sich bekanntlich in einer Virtuellen Tabelle befinden, von der Virtuellen Tabelle in eine Datenbank-Tabelle übertragen. Um eine reibungslose Synchronisierung zu ermöglichen, sollte die Virtuelle Tabelle daher immer eine exaktes Abbild der entsprechenden Datenbank-Tabelle sein.

 

 

» Model-View-Control in XDEV 2 «

In Java Swing setzen sich alle GUI-Komponenten aus 3 Einheiten zusammen: einem Daten-Model-Objekt (Model), einer Anzeige-Einheit (View) und einer Verarbeitungs-Einheit (Controller). Das Model enthält alle Daten für die Anzeige bereit. Die View ist für alles zuständig, was mit der Darstellung der Daten auf der Oberfläche zu tun hat. Der Controller ist für das Registrieren sowie für das Verarbeiten von Ereignissen zuständig, z.B. Mausklicks oder Tastatur-Eingaben. Das sog. 3-Schichten-Modell Model-View-Control (MVC) ist sehr flexibel, da die einzelnen Einheiten nicht fest miteinander verzahnt sind, sondern sich bei Bedarf sehr leicht austauschen lassen. Da XDEV 2 auf Swing aufsetzt, besitzen auch alle XDEV 2 GUI-Komponenten eine MVC Architektur sowie deren Eigenschaften.

 

 

» Virtuelle Tabellen sind das Model (MVC) «

Alle GUI-Komponenten in XDEV 2 besitzen zunächst nur die Fähigkeit, Daten anzuzeigen (View) sowie auf Ereignisse zu reagieren und diese zu verarbeiten (Controller). Erst mit der Übergabe einer Virtuellen Tabelle (Model) wird eine GUI-Komponente vollständig und praxistauglich.

 

Daten, die von einer Table, Combobox, einem Tree oder in einem Formular angezeigt werden sollen, kommen immer aus einer Virtuellen Tabelle. Die Virtuelle Tabelle ist somit für sämtliche GUI-Komponenten das Daten-Model. Das Anzeigen der Daten erfolgt jeweils mit einer hmtoggle_plus1 fillFrom( ) | XDEV NLS: fülleAus( ) Methode oder mit einer speziellen Anweisung, z.B. hmtoggle_plus1 XDEV FillTree | XDEV NLS: XDEV TreeFüllen. Dabei werden jedoch nicht die einzelnen Datensätze übertragen, wie man vermuten könnte. Vielmehr wird die Virtuelle Tabelle als ein komplettes Objekt an die jeweilige GUI-Komponente übergeben, wodurch GUI-Komponente und Virtuelle Tabelle zu einer Einheit verschmelzen.

 

clip0518

Controller

Die Controller-Einheit der GUI-Komponente ist für das Abfangen und Verarbeiten von Ereignissen, insbesondere Anwender-Aktionen und Eingaben zuständig.

 

 

View

Die View ist die Präsentations-Schicht und für die Darstellung der Daten zuständig. Ohne Daten-Model-Objekt kann die GUI-Komponente keine View darstellen.

 

 

Model

In Java ist das Model ein Daten-Model-Objekt, das der Entwickler selber konzipieren muss. In XDEV 2 ist das Model immer eine Virtuelle Tabelle.

 

 

 

 

» Daten-Haltung in Virtuellen Tabellen «

Anders als bei Resultsets in Java lassen sich die Daten einer Virtuellen Tabelle beliebig lange im Speicher halten, jederzeit ergänzen, editieren, sortieren, beliebig oft auslesen und stehen grundsätzlich solange zur Verfügung, bis sie explizit gelöscht werden. Damit es dabei nicht zu einem Speicherüberlauf kommen kann, werden die Daten i.d.R. bereits bei der Datenbankabfrage gefiltert, wodurch sich die Ergebnismenge automatisch reduziert.

Darüber hinaus stehen Ihnen in XDEV 2 GUI-Komponenten wie das DataGrid zur Verfügung, mit dem sich große Datenbestände automatisch ressourcenschonend durchsuchen lassen. Beispielsweise lädt das Datagrid immer nur so viele Datensätze in den Arbeitsspeicher wie es anzeigen kann. Alle weiteren Daten werden erst bei Bedarf nachgeladen.

Das Löschen von Daten in einer Virtuellen Tabelle ist u.a. mit Hilfe der Methoden hmtoggle_plus1 clear( ) | XDEV NLS: löscheAlles( ) und hmtoggle_plus1 removeRows( ) | XDEV NLS: löscheZeilen( ) jederzeit problemlos möglich.

 

 

» Minimaler Speicherbedarf «

Anders als Variablen und andere Datenstrukturen werden Virtuelle Tabellen nicht mit Hilfe von Anweisungen im Code dynamisch erzeugt, sondern müssen manuell im Daten-Editor angelegt werden, den Sie über das Menü Daten aufrufen können. Beim Programmstart werden alle dort angelegten Virtuellen Tabellen automatisch im Arbeitsspeicher des Clients erzeugt. Die Virtuelle Tabelle ist eine völlig unkomplizierte und dynamische Datenstruktur, die Sie weder dimensionieren, noch typisieren müssen. D.h. beim Erzeugen einer Virtuellen Tabelle wird anders als bei Arrays, kein Hauptspeicher vorab reserviert. Das Konstrukt einer Virtuellen Tabelle an sich beansprucht mit nur wenigen Bytes so wenig Speicher, dass Sie sorglos beliebig viele Virtuelle Tabellen anlegen können.

 

Bei den Werten, die in einer Virtuellen Tabelle abgelegt werden sollen, kann es sich um beliebige Datentypen handeln, u.a. um Zahlen, Zeichenketten und sogar um Objekte, z.B. Listen oder Datums-Objekte.

 

 

» Nummerierung durch Index «

Die Virtuelle Tabelle verwaltet alle Zeilen mit einem Index, der immer bei 0 beginnt und immer lückenlos geführt wird. Nach dem Löschen einer Zeile wird der Index aller nachfolgenden Zeilen automatisch um 1 reduziert, sodass der gesamte Index anschließend wieder lückenlos ist.

 

Der Index einer Virtuellen Tabelle ist nicht zu verwechseln mit der ID eines Datensatzes. Die Datensatz-ID wird immer von der Datenbank vergeben und beginnt i.d.R. bei 1. Nach dem Löschen eines Datensatzes in einer Datenbank bleiben alle anderen IDs immer unverändert. Die ID eines gelöschten Datensatzes wird zudem von der Datenbank nicht mehr verwendet.

 

Der Index ist eine laufende Nummerierung

clip0519

 

Index nach dem Löschen von Zeilen

clip0520

 

Virtuelle Tabellen verwalten ihre Zeilen intern mit einem Index beginnend mit 0. Der Index gehört nicht zum Datensatz und ist in der Anwendung nie sichtbar.

 

Nach dem Löschen von Datensätzen wird der Index automatisch neu organisiert. Alle nachfolgenden Zeilen erhalten dabei einen neuen Index, sodass der Index am Ende wieder lückenlos ist. Im Beispiel wurden 4 Zeilen gelöscht.

 

 

 

» Zugriff mit Hilfe von Methoden «

Mit Hilfe spezieller Methoden können Sie auf die Virtuelle Tabelle zugreifen, z.B. um die Virtuelle Tabelle mit einer dazugehörigen Datenbank-Tabelle zu synchronisieren. Eine Übersicht über die Methoden einer Virtuellen Tabelle finden Sie in der Bibliothek unter Virtuelle Tabellen, oder wenn Sie im Code-Editor den Namen der Virtuellen Tabelle gefolgt von einem Punkt, bzw. Backslash für NLS, eingeben. Zu den Methoden werden auch die Datenfeld-Konstanten der Virtuellen Tabelle angezeigt.

 

clip0175

 

 

Hinweis: Im Quellcode werden Virtuelle Tabellen mit dem Sonderzeichen # gekennzeichnet, z.B. #FAHRZEUGE.

 

Tipp: Der Index der Virtuellen Tabelle beginnt immer bei 0. Entscheidend für die Änderung von Datensätzen in einer Datenbank-Tabelle ist jedoch immer die ID des Datensatzes in der Datenbank-Tabelle. Beachten Sie, dass der Index eines Datensatzes in einer Virtuellen Tabelle in der Praxis nicht mit der ID des Datensatzes in der Datenbank übereinstimmen wird. Um z.B. geänderte Datensätze wieder korrekt in die Datenbank speichern zu können, ist es notwendig, dass Sie die Datensätze in einer Virtuellen Tabelle immer über deren Datensatz-ID ansprechen, die folglich unbedingt in der Virtuellen Tabelle als Datenfeld vorhanden sein muss.