Application-Interface Delphi 3

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.

  1. ggf eine neue Seite hinzufügen, einen Namen für die Palettenseite wählen (z.B. dbname).
  2. 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.

 

 

[Application-Interfaces] [Delphi-Interface 1] [Interface Delphi 3] [Interface Java]