Das Interface für Delphi 3+
Im Unterschied zum Delphi1-Interface erzeugt das
Delphi3-Interface visuelle Komponenten für jede Virtab und
integriert diese damit in die graphische Entwicklungsumgebung
von Delphi. Die visuellen Komponenten können beim
Programmentwurf zusammen mit “normalen”
Datenzugriffskomponenten wie TTable oder TQuery verwendet
werden und erlauben so eine einfache Verknüpfung der Virtabs
mit graphischen Datenvisualisierungs- oder
Editierungskomponenten.
Codeerzeugung:
Zur Erzeugung muss ER2SQL wie folgt aufgerunfen werden:
... -db_name:<db_name> -delphi3:vt_<db_name>.pas
Die entstehende Unit sowie alle in ihr definierte
TVirtab-Objekte tragen datenbankspezifische Namen, damit
virtuelle Tabellen für mehrere verschiedene Datenbankprojekte
gleichzeitig in der Delphi-Entwicklungsumgebung installiert
sein können ('TVirtabT' heißt jetzt
'TVirtabTable<dbname>', 'TVirtabQ' heißt jetzt
'TVirtabQuery<dbname>').
Installation:
Die Datei “vt_<dbname>.pas” muss in Delphi per
'Komponente / Installieren' in das Package 'Delphi
Anwenderkomponenten' aufgenommen werden, damit die visuellen
Komponenten auf einem Registerblatt (Palette) der
Entwicklungsumgebung erscheinen. Das Verhalten variiert dabei
je nachdem, ob man die Virtab-Komponenten erstmalig oder
wiederholt (nach Neudefinition) installiert, und
wahrscheinlich auch zwischen Delphi3 und Delphi5.
Anschließend sollten die Objekte
'TVirtabTable<dbname>' und 'TVirtabQuery<dbname>'
in die Komponentenpalette gebracht werden (evtl. erscheinen
sie dort je nach Situation auch automatisch). Dies wird im
Dialog 'Komponente', 'Palette konfigurieren...' durchgeführt.
-
ggf eine neue Seite hinzufügen, einen Namen für die Palettenseite wählen (z.B. dbname).
- Links auf 'Seiten'/'[Alle]' klicken, aus dem rechten
Fenster die Komponenten
'TVirtabTable<dbname>' und 'TVirtabQuery<dbname>' auf die neue Palettenseite aus 1. ziehen.
Verwendung:
Um im Programm direkten Zugriff auf die Virtab-Prozeduren
als TStoredProc-Objekte zu haben, muss zunächst
'VirtabTable<mytable>.Open()' aufgerufen werden (obwohl
die Daten wahrscheinlich nicht gebraucht werden).
Hintergrund: Die Delphi3-Komponenten machen Gebrauch vom
Cache der BDE und dem “UpdateSQL”-Objekt. Datenzugriffe
ändern zunächst nur Daten in einem Puffer der BDE. Beim
Aufruf von 'ApplyUpdates' vergleicht die BDE dann die neue
Datenmenge in ihrem Puffer mit der Datenlage auf dem Server
und ruft zum Abgleich die Insert-, Update- oder
Delete-Prozedur eines SQLUpdate-Objektes auf, das wiederum
die Virtab-Prozeduren startet.
Es empfiehlt sich die übrigens Verwendung von TVirtabQuery
(tatsächlich wurde TVirtabTable noch nie benutzt :-).
Bei dieser kann mittels der .SQL-Eigenschaft eine
Einschränkung auf die dargestellte Datenmenge durchgeführt
werden (“SELECT ... WHERE “). Schreibvorgänge sind trotzdem
möglich. Dies Entspricht der serverseitigen Implementierung
einer TTable mit .Filtern.
Non-cached Betrieb der Virtab-Komponenten ist nicht möglich.
Es ist keine gepatchte db.pas-Datei mehr nötig!
Achtung: Die Virtab-Komponenten haben auch alle
Eigenschaften normaler TDataSets. Alle “technischen”
Parameter wie CachedUpdate, RequestLive, Tablename,
TableType, UpdateObject etc. etc. dürfen nicht verstellt
werden!
Neue Eigenschaften der Virtab-Komponenten sind:
- “.VirtabKind”
Das Virtab-Objekt wird auf eine Virtab
eingestellt. Dies darf zur Laufzeit nur ausserhalb
'Open'/'Close' gesetzt werden. Die zugehörigen
Insert/Update/Delete-Prozeduren werden erst durch den
folgenden Aufruf von 'Open' allokiert (vgl. oben).
- “.VirtabSchema”
dient zu Dokumentationszwecken,
spiegelt den Parameter -dbschema beim Lauf von er2sqlo
wieder.
- “.Database” muss vor “.VirtabKind” gesetzt werden, damit
Zugriff auf die Virtab-Prozeduren in der Datenbank besteht.
Je nach Ausbaustand sind noch zusätzliche Dienste
implementiert. Die aktuelle Dokumentation steht am anfang in
vt_<dbname>.pas.
ODAC
“ODAC” steht für “Oracle Data Access Components“
und ist eine kommerzielle Delphi-Komponente, die einerseits
ohne Zwischenschicht (wie etwa der BDE) direkt auf das
Oracle-Call-Interface (OCI) aufsetzt, andererseits fast
100%-kompatibel zu den BDE-basierten TTable und TQuery ist.
Vorteile sind hohe Performance und die Unterstützung vieler
ORACLE-spezifischer Objekte.
Das Delphi3-Interface für ODAC unterscheidet sich in einigen
wenigen Punkten vom BDE-Interface. Es wird mit der
Kommandozeilen-Option “-delphi3_odac” erzeugt.
SQLDirect
SQLDirect ist eine kommerzielle Datenbank component library,
die ein sehr breites Spektrum von Datenbanken ansteuern kann,
darunter auch Oracle, PostgresSQL und Microsoft SQLServer.
Sie ist als Ersatz der BDE konzipiert. Die Performance und
Kompatibilität zur BDE sind nicht so gut wie bei ODAC, es ist
muss aber für den Zugriff auf PostgresSQL-Datenbanken
eingesetzt werden.
Das Delphi3-Interface für SQLDirect wird mit der
Kommandozeilen-Option “-delphi3_sqldirect” erzeugt.
|