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