Когда вы перемещаете данные между удаленным сервером и Visual FoxPro, вы можете найти различия в типах данных, доступных на сервере или в Visual FoxPro. Однозначное соответствие между типами данных на удаленном источнике данных и типами данных, которые доступны в Visual FoxPro встречается крайне редко. Для обслуживания этих различий, Visual FoxPro использует ODBC или ADO типы данных для разметки удаленных типов данных в локальные типы данных Visual FoxPro. Поняв, как размечаются типы данных между ODBC или ADO и Visual FoxPro, вы можете предсказать, как данные удаленного сервера будут обработаны в вашем Visual FoxPro приложении.
Вы можете, кроме того, подогнать типы данных, используемые на сервере или в вашем приложении. Вы можете переписать типы данных полей, используемых Visual FoxPro по умолчанию, создав представление для набора удаленных данных и, затем, переписать установки свойства DataType поля представления в базе данных. Свойство DataType представляет собой символьное свойство, указывающее желаемый тип данных для каждого поля в удаленном представлении. Для получения более подробной информации о свойстве DataType смотрите описание функции DBSETPROP().
Преобразование типа данных между удаленными представлениями и курсорами Visual FoxPro
Когда вы извлекаете данные из удаленного источника через ODBC или ADO, Visual FoxPro преобразует тип данных каждого поля ODBC или ADO в эквивалентный тип данных Visual FoxPro в курсоре результата.
Удаленные типы данных в типы данных Visual FoxPro
В приведенной ниже таблице приведена используемая по умолчанию разметка между типами данных удаленного поля и Visual FoxPro типами данных для курсоров.
Тип данных ODBC/ADO | Тип данных курсора Visual FoxPro, используемый по умолчанию | ||
---|---|---|---|
SQL_BINARY / adBinary SQL_VARBINARY / adVarbinary |
Memo/Blob1 или Varbinary
|
||
SQL_LONGVARBINARY |
General/Blob
|
||
adLongVarbinary |
Memo или Character |
||
SQL_CHAR / adChar SQL_WCHAR / adWChar |
Memo1 или Character |
||
SQL_LONGVARCHAR / adLongVarChar SQL_WLONGVARCHAR / adLongVarWChar |
Memo |
||
SQL_VARCHAR / adVarChar SQL_WVARCHAR / adVarWChar |
Memo1 или Character/Varchar
|
||
SQL_DECIMAL / adNumeric SQL_NUMERIC / adNumeric |
Currency2 |
||
SQL_BIT / adBoolean |
Logical |
||
SQL_TINYINT / adVarbinary SQL_SMALLINT / adSmallInt SQL_INTEGER / adInteger |
Integer |
||
SQL_BIGINT / adBigInt |
Character |
||
SQL_REAL / adSingle SQL_FLOAT / adDouble SQL_DOUBLE / adSingle |
Double
|
||
SQL_DATE / adDBTimeStamp |
Date |
||
SQL_TIME / adDBTTimeStamp |
DateTime4 |
||
SQL_TIMESTAMP / adBinary |
DateTime3 |
1 Если ширина поля ODBC/ADO меньше, чем значение свойства курсора UseMemoSize, то оно становится полем Character/Varchar/Varbinary в курсоре Visual FoxPro; в противном случае, он становится полем Memo/Blob.
2 Если поле сервера представляет собой тип данных money, оно становится типом данных Currency в Visual FoxPro.
3 Если значение в поле SQL_TIMESTAMP содержит доли секунд, то эти доли отбрасываются, когда значение поля преобразуется в тип данных Visual FoxPro DateTime.
4 День устанавливается по умолчанию в 1/1/1900.
В приведенной ниже таблице перечислены типы, доступные при использовании удаленных представлений или объектов CursorAdapter наравне с источниками данных ODBC или ADO и эквивалентными типами данных Visual FoxPro. Для получения более подробной информации об указании схемы курсора смотрите описание метода CursorFill объекта CursorAdapter .
Тип данных ODBC/ADO | Акцептируемые курсором Visual FoxPro типы данных | ||
---|---|---|---|
SQL_BINARY / adBinary SQL_VARBINARY / adVarbinary SQL_LONGVARBINARY / adLongVarbinary SQL_CHAR / adChar SQL_VARCHAR / adVarChar SQL_LONGVARCHAR / adLongVarChar |
Blob, Varbinary, Character, Varchar, General, Memo5 |
||
SQL_WCHAR / adWChar SQL_WVARCHAR / adVarWChar SQL_WLONGVARCHAR / adLongVarWChar |
Character, Varchar, Memo |
||
SQL_BIT / adBoolean |
Character, Varchar, Logical |
||
SQL_REAL / adSingle SQL_FLOAT / adDouble SQL_DOUBLE / adSingle SQL_DECIMAL / adNumeric SQL_NUMERIC / adNumeric SQL_TINYINT / adVarbinary SQL_SMALLINT / adSmallInt SQL_INTEGER / adInteger SQL_BIGINT / adBigInt |
Character, Varchar, Integer, Numeric, Float, Double или Currency6
|
||
SQL_DATE / adDBTimeStamp SQL_TIMESTAMP / adBinary |
Character, Varchar, Date, DateTime7 |
||
SQL_TIME / adDBTTimeStamp |
Character, Varchar, DateTime8 |
5 Если ширина поля ODBC меньше, чем значение свойства курсора UseMemoSize, оно становится полем Character в курсоре Visual FoxPro; в противном случае оно становится Memo полем.
6 Если поле сервера представляет собой тип данных money, оно становится типом данных Currency в Visual FoxPro.
7 Если значение в поле SQL_TIMESTAMP field содержит доли секунд, то эти доли отбрасываются при преобразовании значения в тип данных Visual FoxPro DateTime.
8 День устанавливается по умолчанию в 1/1/1900.
![]() |
---|
Null-значения в полях источников данных ODBC становятся null-значениями в курсоре Visual FoxPro, вне зависимости от установки SET NULL в Visual FoxPro во время, когда приложение извлекает удаленные данные. |
В Visual FoxPro 9.0, определенные типы данных ODBC и ADO могут быть размечены в логический тип данных в удаленных представлениях и объекте CursorAdapter.
Если значением backend является zero, тип данных размечается в логическое False (.F.); все другие значения размечаются в True (.T.). При производстве обновления, разметка из логических данных в целочисленный тип является зависимой от backend. Для ODBC, False (.F.) обычно размечается в 0, а True (.T.) обычно размечается в 1. Для ADO, False (.F.) обычно размечается в zero, а .T. обычно размечается в 1 или -1, в зависимости от исполняемой команды. Для принудительной разметки может быть использовано свойство ConversionFunc объекта.
Для удаленных представлений и объекта CursorAdapter, типы данных ODBC SQL_DECIMAL и SQL_NUMERIC могут быть размечены только в логические значения, если Scale установлено в zero.
Для объекта CursorAdapter типы данных ADO adDecimal и adNumeric могут быть размечены только в логические значения, если Scale установлено в zero.
В приведенной ниже таблице перечислены типы данных ODBC и ADO, которые могут быть размечены в логический тип данных.
Тип данных ODBC | Тип данных ADO |
---|---|
SQL_TINYINT SQL_SMALLINT SQL_INTEGER SQL_BIGINT SQL_DECIMAL SQL_NUMERIC |
adSingle adTinyInt adSmallInt adInteger adBigInt adUnsignedTinyInt adUnsignedSmallInt adDecimal adNumeric |
В приведенной ниже таблице перечислены типы данных Visual FoxPro, доступные при использовании удаленных представлений с объектами CursorAdapter и родными данными Visual FoxPro и их эквивалентами с типами данных Visual FoxPro.
Родные типы данных Visual FoxPro | Акцептируемые курсором Visual FoxPro типы данных |
---|---|
Character, Memo, General |
Character, Varchar, Memo, General |
Numeric, Float, Currency, Integer, Double |
Numeric, Float, Currency, Integer, Double, Character, Varchar |
Logical |
Logical, Character, Varchar |
Date, DateTime |
Character, Varchar, Date, DateTime |
Значения параметра Visual FoxPro для типов данных удаленных представлений
Если в курсоре Visual FoxPro присутствуют данные, которые получены из удаленных данных, то данные преобразуются обратно в их оригинальные типы данных ODBC или ADO при отсылке их на удаленный сервер. Если вы посылаете данные, созданные в Visual FoxPro на удаленный сервер с использованием технологии SQL, то применяются преобразования, приведенные в таблице.
Типы данныхVisual FoxPro | Тип данных ODBC |
---|---|
Character, Varchar, Memo |
SQL_CHAR или SQL_LONGVARCHAR9 |
Blob, Varbinary |
SQL_BINARY или SQL_LONGVARBINARY |
Currency |
SQL_DECIMAL |
Date |
SQL_DATE или SQL_TIMESTAMP10 |
DateTime |
SQL_TIMESTAMP |
Double |
SQL_DOUBLE |
Integer |
SQL_INTEGER |
General |
SQL_LONGVARBINARY |
Logical |
SQL_BIT |
Numeric |
SQL_DOUBLE |
9 Если переменная Visual FoxPro, которая размечена в параметр, создает выражение, ширина которого меньше 255 символов, то оно становится типом SQL_CHAR в источнике данных ODBC; в противном случае оно становится типом SQL_LONGVARCHAR.
10 Данные типа Visual FoxPro Date преобразуются в SQL_DATE для всех источников данных ODBC, за исключением SQL Server, где они становятся SQL_TIMESTAMP.
Разметка значений параметра Visual FoxPro в удаленный тип данных
Вы можете разметить значение параметра Visual FoxPro в конкретный тип удаленных данных, форматируя параметр, как символьное выражение, которое использует синтаксис для желаемого удаленного типа данных. Например, если ваш сервер предоставляет тип данных DateTime, вы можете создать ваш параметр Visual FoxPro в виде символьного выражения в формате, используемом вашим сервером для представления типа данных DateTime. Когда ваш сервер получает значение параметра, он пытается разметить форматированные данные в тип данных DateTime.
![]() |
---|
Когда вы посылаете параметр удаленному серверу, убедитесь, что тип данных в ключевом слове WHERE соответствует типу данных, используемых для выражения параметра. |
Смотрите также
Концепции
Обработка множественных наборов результатовОбслуживание ошибок SQL Pass-Through
Работа с удаленными данными с использованием SQL Pass-Through
Прочие ресурсы
Расширение приложений с помощью технологии SQL Pass-ThroughПланирование приложений Client/Server
Перенос баз данных Visual FoxPro
Создание представлений