Visual FoxPro enthält die folgenden Erweiterungen der Features im Bereich des Datenzugriffs.
Sie können nun mit Hilfe der CursorAdapter-Klasse mit einem breiteren Repertoire an Datenquellen arbeiten. Die CursorAdapter-Klasse bietet folgenden Möglichkeiten:
Um die neue CursorAdapter-Funktionalität zu unterstützen, enthält Visual FoxPro die folgenden Erweiterungen:
Für weitere Informationen siehe Managen des Zugriffs auf Daten mit dem CursorAdapter, CursorAdapter-Klasse, GETCURSORADAPTER( )-Funktion und CursorAdapter-Generator.
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.
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.
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.
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.
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.
Was ist neu in Visual FoxPro 8.0 | Erweiterung der Interaktiven Entwicklungsumgebung (IDE) | Spracherweiterungen | Verschiedene Erweiterungen | Änderungen im Verhalten seit Visual FoxPro 7.0