Visual FoxPro  

Erweiterung der Features im Bereich des Datenzugriffs

 Zum Portal | In übergeordneten Ordner wechseln

Visual FoxPro enthält die folgenden Erweiterungen der Features im Bereich des Datenzugriffs.

  • Remote-Datenverbindung mittels CursorAdapter-Klasse
  • Erstellen, Ableiten und Angeben einer DataEnvironment-Klasse
  • Automatisch inkrementierende Feldwerte
  • Unterstützung für Sortierreihenfolgen
  • Implizite Datenumwandlung mit dem SQL SELECT...UNION-Befehl
  • Zeile aus einem SQL SELECT-Befehl einfügen

Remote-Datenverbindung mittels CursorAdapter-Klasse

Sie können nun mit Hilfe der CursorAdapter-Klasse mit einem breiteren Repertoire an Datenquellen arbeiten. Die CursorAdapter-Klasse bietet folgenden Möglichkeiten:

  • Unterstützung von nativen Datenquellen (FoxPro), Open Database Connectivity (ODBC), ActiveX Data Object (ADO) oder Extensible Markup Language (XML) als Datenquellentypen
  • Dynamische Verwendung verschiedener Datenquellen
  • Verwendet entweder die Datenquelle des CursorAdapter-Objekts oder die Datenumgebung
  • Gemeinsame Nutzung von Datenquellen bis an das technische Limit
  • Verwendung der CursorAdapter-Klasse als Standalone, d.h. ohne dazugehörige Datenumgebung
  • Optional Definition der Struktur eines Cursors, der mit einem CursorAdapter-Objekt assoziiert ist.
  • Automatische und richtige Wiedergabe von Daten einer Datenquelle als Visual FoxPro-Cursor basierend auf dem Datenquellentyp.
  • Steuerung des Ladevorgangs der Daten in einen Cursor, der mit einem CursorAdapter-Objekt assoziiert ist.
  • Steuern wie Daten hinzugefügt, aktualisiert und gelöscht werden; unter Verwendung der Eigenschaften und Methoden des CursorAdapters.
  • Hinzufügen von CursorAdaptern zu Containern, bei denen es sich nicht um eine Datenumgebung handelt, wie z.B. Formulare oder Formularsätze.

Um die neue CursorAdapter-Funktionalität zu unterstützen, enthält Visual FoxPro die folgenden Erweiterungen:

  • Möglichkeiten zur Definition und Klassenableitung durch Verwendung der CursorAdapter-Klasse im Klassendesigner und als Parameter in den Befehlen CREATE CLASS und MODIFY CLASS.
  • Die neue GETCURSORADAPTER( )-Funktion zur Rückgabe einer Objektreferenz auf ein CursorAdapter-Objekt zur Laufzeit.
  • Aktualisierung der TABLEUPDATE( )-Funktion, so dass sie CursorAdapter-Objekte erkennt und behandeln kann
  • Öffnen interner Cursor als gepufferte Cursor und Setzen der optimistischen Pufferung als Standardeinstellung.
  • Enthält den neuen CursorAdapter-Generator.

Für weitere Informationen siehe Managen des Zugriffs auf Daten mit dem CursorAdapter, CursorAdapter-Klasse, GETCURSORADAPTER( )-Funktion und CursorAdapter-Generator.

Erstellen, Ableiten und Angeben einer DataEnvironment-Klasse

Sie können nun Ihre Datenumgebung in Form der DataEnvironment-Klasse definieren oder ableiten. Wenn Sie die Visual FoxPro-IDE oder den CREATE CLASS-Befehl zur Erstellung einer neuen Klasse verwenden, bietet Visual FoxPro die DataEnvironment-Klasse an, und zwar im Dialogfeld "Neue Klasse" in der Liste der Basisklassen. Sie können die DataEnvironment-Klasse auch als Basisklasse im cBaseClassName-Parameter des CREATE CLASS- und MODIFY CLASS-Befehls angeben.

Aus einem Formular heraus können Sie die DataEnvironment-Klasse als eine virtuelle Klasse (vcx) speichern, indem Sie das Formular auswählen, "Als Klasse speichern" aus dem Menü "Datei" anklicken und im anschließenden Formular die Datenumgebung wählen. Alle Eigenschaften, Methoden und Ereignisse der Datenumgebung stehen, wie zuvor im Formular, in der gespeicherten Klasse zur Verfügung.

Sie können in einem Formular eine "externe" Datenumgebung zur Entwurfs- sowie zur Laufzeit angeben und laden. Sie können die Eigenschaften DEClass und DEClassLibrary des Formulars verwenden, um eine externe DataEnvironment-Klasse und deren Klassenbibliothek anzugeben, so das beim Instanziieren des Formulars die angegebene DataEnvironment-Klasse automatisch geladen wird.

Für weitere Informationen siehe Datenumgebungsobjekt (DataEnvironment), Formularobjekt (Form), DEClass-Eigenschaft und DEClassLibrary-Eigenschaft.

Automatisch inkrementierende Feldwerte

Sie können Feldwerte in Datenbank- und freien Tabellen nun automatisch erhöhen unter Verwendung des autoinkrementellen Features in Visual FoxPro. Für die neue autoinkrementelle Funktion wurde ein modifizierter, schreibgeschützter Integer-Datentyp eingefügt. Sie können die AUTOINC-Klausel in den SQL-Befehlen CREATE TABLE und ALTER TABLE verwenden, um ein autoinkrementelles Feld zu bestimmen, und für die Erhöhung einen nächst zu verwendenden Wert (NEXTVALUE) und einen Schrittwert (STEP) angeben. Auch steht Ihnen der neue Datentyp als "Integer (AutoInc)" im Tabellendesigner zur Verfügung. Für weitere Informationen siehe CREATE TABLE - SQL-Befehl, ALTER TABLE - SQL-Befehl, Registerkarte "Felder", Tabellen-Designer, Autoinkrementierungsfelder in Visual FoxPro und Setzen von Werten für Autoinkrementationsfelder.

Die AFIELDS( )-Funktion gibt nun 18 Spalten anstelle der bisherigen 16 zurück. Die Spalten Nummer 17 und 18 sind für die Angabe des nächsten Wertes und des Schrittwertes reserviert, die einen Wert des numerischen Datentyps Integer enthalten. Für weitere Informationen siehe AFIELDS( )-Funktion.

Der Befehl COPY STRUCTURE EXTENDED fügt für die Unterstützung der Autoinkrementation die numerischen Felder FIELD_NEXT und FIELD_STEP hinzu. Für weitere Informationen siehe COPY STRUCTURE EXTENDED-Befehl.

Visual FoxPro modifiziert die Tabellenheader, wenn Sie die Autoinkrementation von Felderwerten in einer Tabelle verwenden. Für weitere Informationen siehe Struktur von Tabellendateien (.DBC, .DBF, .FRX, .LBX, .MNX, .PJX, .SCX, .VCX).

Sie können auch angeben, ob ein Fehler generiert wird bei dem Versuch, die Werte in einem Feld zu aktualisieren, das Autoinkrementation verwendet. Für weitere Informationen siehe SET AUTOINCERROR-Befehl oder die Eigenschaft AutoIncError in der CURSORSETPROP( )-Funktion.

Unterstützung für Sortierreihenfolgen

In älteren Versionen mussten Sie bei der Erstellung eines Index den SET COLLATE TO-Befehl angeben, um eine Sortierreihenfolge zu verwenden, die vom Standard abweicht. Sie können nun verschiedene Sortierungen beim Erstellen oder Anpassen von Tabellen im Tabellendesigner angeben und auch wenn Sie die COLLATE-Klausel zusammen mit den Befehlen SQL CREATE TABLE, ALTER TABLE und INDEX verwenden. Für weitere Informationen siehe  Registerkarte "Indizes", Tabellen-Designer, CREATE TABLE - SQL-Befehl, ALTER TABLE - SQL-Befehl und INDEX-Befehl.

Implizite Datenumwandlung mit dem SQL SELECT...UNION-Befehl

Der SQL SELECT-Befehl mit dem Schlüsselwort UNION führt nun implizite Datentypenkonvertierung bei den Datentypen aus, die dieses Verfahren unterstützen. So Schlagen z.B. UNION-Operationen mit Spalten unterschiedlicher Länge oder unterschiedlicher Typen fehl, bis diese genau mit den Spaltenbreiten, unter Verwendung einer Konvertierungsfunktion übereinstimmen. Nehmen wir an, Sie haben folgenden Code:

CREATE CURSOR t1 (f1 c(10))
INSERT INTO t1 VALUES ('1111111111')
CREATE CURSOR t2 (f1 c(2))
INSERT INTO t2 VALUES ('11')
SELECT * FROM t1 INTO CURSOR t3 UNION SELECT * FROM t2 && Fails.

Dieser Code schlägt fehl, bis die Spaltenbreite übereinstimmt, wie in der folgenden Zeile gezeigt:

SELECT * FROM t1 INTO CURSOR t3 UNION SELECT SUBSTR(f1,1,2) FROM t2

Sie müssen nun keine expliziten Konvertierungsfunktionen mehr für die Datentypen angeben oder verwenden, die implizite Datenumwandlung unterstützen. Für weitere Informationen, siehe den Abschnitt Datentyp, Umwandlung und Priorität im SELECT - SQL-Befehl.

Zeilen aus einem SQL SELECT-Befehl einfügen

Sie können nun Zeilen aus einem SQL SELECT-Befehl einfügen, wenn Sie den SQL INSERT-Befehl verwenden. Sie können die Inhalte der ausgewählten Spalten oder aller Spalten einer Zeile kopieren. Jedoch müssen Sie sicherstellen, dass die von Ihnen kopierten Daten mit den Spalten kompatibel sind, in die diese Daten kopier werden. Für weitere Informationen siehe den INSERT - SQL-Befehl.

Sie können die Anzahl Datensätze, die bei dem zuletzt ausgeführten Tabellenbefehl bearbeitet wurden, mit Hilfe der Systemvariable _TALLY feststellen. Sie erhält einen numerischen Wert, der der Anzahl eingefügter Zeilen entspricht. Für weitere Informationen siehe _TALLY-Systemvariable.

Siehe auch

Was ist neu in Visual FoxPro 8.0 | Erweiterung der Interaktiven Entwicklungsumgebung (IDE) | Spracherweiterungen | Verschiedene Erweiterungen | Änderungen im Verhalten seit Visual FoxPro 7.0