Freigeben über


Steuern der Datentypkonvertierung

Wenn Sie Daten zwischen einem Remoteserver und Visual FoxPro übertragen, stoßen Sie meist auf das Problem, dass auf dem Server bzw. in Visual FoxPro unterschiedliche Datentypen zur Verfügung stehen. Nur in Ausnahmefällen gibt es eine Eins-zu-eins-Beziehung zwischen den Datentypen einer Remotedatenquelle und denen von Visual FoxPro. Um dieses Problem zu lösen, verwendet Visual FoxPro die ODBC-Datentypen, um Remotedatentypen auf lokale Visual FoxPro-Datentypen abzubilden. Sobald Sie wissen, wie Datentypen zwischen ODBC und Visual FoxPro abgebildet werden, können Sie vorhersagen, wie die von einem Server bereitgestellten Remotedaten in Ihrer Visual FoxPro-Anwendung behandelt werden.

Bei Bedarf können Sie auch die Datentypen festlegen, die auf Ihrem Server oder in Ihrer Anwendung verwendet werden. Der Standarddatentyp eines Visual FoxPro-Feldes kann außer Kraft gesetzt werden, indem Sie für die Remotedaten eine Ansicht erstellen und danach in der Datenbank die DataType-Eigenschaft des Feldes der Ansicht entsprechend festlegen. Dazu weisen Sie der DataType-Eigenschaft dieses Feldes der Remoteansicht eine Zeichenfolge zu, die den gewünschten Datentyp angibt. Weitere Informationen über die DataType-Eigenschaft finden Sie unter DBSETPROP( ).

Herunterladen oder Hochladen von Daten über eine Remoteansicht

Wenn Sie Daten von einer Remote-ODBC-Datenquelle abrufen, wandelt Visual FoxPro den Datentyp der einzelnen ODBC-Felder im Cursor des Resultsets in einen entsprechenden Visual FoxPro-Datentyp um. Die folgende Tabelle stellt den auf ODBC-Datenquellen verfügbaren Datentypen die entsprechenden Visual FoxPro-Datentypen gegenüber.

ODBC-Datentyp eines Remotefeldes Felddatentyp in einem Visual FoxPro-Cursor
SQL_CHAR
SQL_VARCHAR
SQL_LONGVARCHAR
Zeichen oder Memo1
SQL_BINARY
SQL_VARBINARY
SQL_LONGVARBINARY
Memo
SQL_DECIMAL
SQL_NUMERIC
Numerisch oder Währung2
SQL_BIT Logisch
SQL_TINYINT
SQL_SMALLINT
SQL_INTEGER
Integer
SQL_BIGINT Zeichen
SQL_REAL
SQL_FLOAT
SQL_DOUBLE
Double; die Anzahl der Dezimalstellen wird in Visual FoxPro durch den SET DECIMAL-Wert angegeben.
SQL_DATE Datum
SQL_TIME DatumZeit3
SQL_TIMESTAMP DatumZeit4

1 Wenn die Breite des ODBC-Feldes geringer ist als der Wert der UseMemoSize-Cursoreigenschaft, wird es zu einem Feld vom Typ Zeichen im Visual FoxPro-Cursor; andernfalls wird es zu einem Feld vom Typ Memo.
2 Weist das Feld auf dem Server einen Währungsdatentyp auf, erhält es in Visual FoxPro den Datentyp Währung.
3 Standardwert für den Tag ist 1.1.1900.
4 Enthält der Wert eines SQL_TIMESTAMP-Feldes Sekundenbruchteile, werden diese Bruchteile abgetrennt, wenn der Wert in den Visual FoxPro-Datentyp DatumZeit umgewandelt wird.

Anmerkung   Nullwerte, die in Feldern einer ODBC-Datenquelle stehen, werden als Nullwerte in den jeweiligen Visual FoxPro-Cursor übernommen, und zwar unabhängig davon, wie SET NULL in dem Moment in Visual FoxPro festgelegt war, in dem Ihre Anwendung die Remotedaten abgerufen hat.

Umwandeln von Visual FoxPro-Parametern in Datentypen einer Remoteansicht

Enthält ein Cursor Visual FoxPro-Daten, die aus Remotedaten hervorgegangen sind, erhalten diese Daten wieder ihren ursprünglichen ODBC-Datentyp, wenn sie an den Remoteserver gesendet werden. Wenn Sie mit SQL Pass-Through-Funktionen Daten an den Remoteserver senden, die aus Visual FoxPro stammen, werden die Datentypen wie folgt umgewandelt.

Visual FoxPro-Datentyp ODBC-Datentyp
Zeichen SQL_CHAR oder SQL_LONGVARCHAR1
Währung SQL_DECIMAL
Datum SQL_DATE oder
SQL_TIMESTAMP2
DatumZeit SQL_TIMESTAMP
Double SQL_DOUBLE
Integer SQL_INTEGER
Objektfeld SQL_LONGVARBINARY
Logisch SQL_BIT
Memo SQL_LONGVARCHAR
Numerisch SQL_DOUBLE

1 Erzeugt die Visual FoxPro-Speichervariable, die auf einen Parameter abgebildet wird, einen Wert, der weniger als 255 Zeichen breit ist, erhält das entsprechende Feld in der ODBC-Datenquelle den Datentyp SQL_CHAR; andernfalls erhält es den Datentyp SQL_LONGVARCHAR.
2 Visual FoxPro-Daten vom Typ Datum werden für alle ODBC-Datenquellen in SQL_DATE umgewandelt.
Die einzige Ausnahme bildet SQL-Server, wo diese Daten den Typ SQL_TIMESTAMP erhalten.

Abbilden eines Visual FoxPro-Parameters auf einen Remotedatentyp

Sie können den Wert eines Visual FoxPro-Parameters auf einen bestimmten Remotedatentyp abbilden, indem Sie den Parameter als Zeichenausdruck formatieren, der in der Syntax des gewünschten Remotedatentyps vorliegt. Wenn Ihr Server beispielsweise den Datentyp DatumZeit bereitstellt, können Sie einen Visual FoxPro-Parameter als Zeichenausdruck erstellen, der das Format hat, in dem auf Ihrem Server DatumZeit-Daten dargestellt werden. Wenn der Server den Wert des Parameters empfängt, versucht er, die formatierten Daten auf den Datentyp DatumZeit abzubilden.

Anmerkung   Wenn Sie einen Parameter an einen Remoteserver senden, muss sichergestellt sein, dass der Datentyp in der WHERE-Klausel zu dem Datentyp passt, der für den Parameterausdruck verwendet wird.

Siehe auch

Verarbeiten mehrerer Resultsets | Umgehen mit SQL Pass-Through-Fehlern | Funktionsweise von Remotedaten bei Einsatz von SQL Pass-Through | Implementieren einer Client/Server-Anwendung | Entwurf von Client/Server-Anwendungen | Upsizing von Visual FoxPro-Datenbanken | Erstellen von Ansichten