Correspondence between Field Types and VARIANT Types

Field type

VARIANT type

Note

GDB tables

gdbFieldTypeString

VT_BSTR

Variable-length string of characters. Converting characters from or to Unicode is based on the current code page.

gdbFieldTypeInteger

VT_I4

Integer. The overflow error may occur while retrieving a value because a range of integers in GDB is wider than that of VT_I4.

gdbFieldTypeDouble

VT_R8

Float. Ranging from ±4.19?10–308 to ±1.67?10308. Mantissa precision: 15 decimal digits.

gdbFieldTypeBoolean

VT_BOOL

Logical value.

gdbFieldTypeDate

VT_DATE

Date. When setting a field value, the fractional part of float representation of a date (i.e., time) in the VT_DATE format is ignored. When retrieving a field value, the fractional part of float representation of a date (i.e., time) in the VT_DATE format equals 0. The error occurs when a date less than January 1, 100 is retrieved because a range of dates in GDB is wider than that of VT_DATE.

gdbFieldTypeTime

VT_DATE

Time. When setting a field value, the integer part of float representation of a date (i.e., date) in the VT_DATE format is ignored. When retrieving a field value, the integer part of float representation of a date (i.e., date) in the VT_DATE format equals 0. A loss of accuracy of time representation is possible while retrieving or setting a value.

gdbFieldTypeTimestamp

VT_DATE

Timestamp. A loss of accuracy of time representation is possible while setting or retrieving a value. The error occurs when a timestamp less than 1-Jan-100 is retrieved because a range of timestamps in GDB is wider than that of VT_DATE.

gdbFieldTypeOLEObject

VT_BSTR

Embedded or linked OLE object. A string being returned or set represents an OLE object descriptor. Converting characters from or to Unicode is based on the current code page.

empty value in a field

VT_NULL

External database tables

gdbExtDBFieldTypeChar

VT_BSTR

String of characters. Converting characters from or to Unicode is based on the current code page. The string length in characters is determined by the Field::Precision property.

gdbExtDBFieldTypeVarChar

VT_BSTR

String of characters. Converting characters from or to Unicode is based on the current code page. The maximum string length in characters is determined by the Field::Precision property.

gdbExtDBFieldTypeLongVarChar

VT_BSTR

String of characters. Converting characters from or to Unicode is based on the current code page. If the full extraction is not set for BLOB fields while retrieving the field value by the Field::Value property, the value is truncated. The maximum length of retrieved characters is determined by the Recordset::MaxBLOBLength property. If the full extraction is set, the full value of BLOB field can be retrieved using the Field::PutTo method. If you want to set the value of BLOB field when the full extraction is on, use the Field::GetFrom method (it is impossible to use the Field::Value property in this case).

gdbExtDBFieldTypeWChar

VT_BSTR

String of characters. Converting characters from or to Unicode is based on the current code page. The string length in characters is determined by the Field::Precision property.

gdbExtDBFieldTypeWVarChar

VT_BSTR

String of characters. Converting characters from or to Unicode is based on the current code page. The maximum string length in characters is determined by the Field::Precision property.

gdbExtDBFieldTypeWLongVarChar

VT_BSTR

String of characters. Converting characters from or to Unicode is based on the current code page. If the full extraction is not set for BLOB fields while retrieving the field value by the Field::Value property, the value is truncated. The maximum length of retrieved characters is determined by the Recordset::MaxBLOBLength property. If the full extraction is set, the full value of BLOB field can be retrieved using the Field::PutTo method. If you want to set the value of BLOB field when the full extraction is on, use the Field::GetFrom method (it is impossible to use the Field::Value property in this case).

gdbExtDBFieldTypeDecimal

VT_BSTR

String – character representation of exact decimal number in the format '<integer part>.<fractional part>'. The total number of digits for the integer and fractional parts is determined by the Field::Precision property. The Field::Scale property returns the number of decimal digits to the right of the decimal point.

gdbExtDBFieldTypeNumeric

VT_BSTR

String – character representation of exact decimal number in the format '<integer part>.<fractional part>'. The total number of digits for the integer and fractional parts is determined by the Field::Precision property. The Field::Scale property returns the number of decimal digits to the right of the decimal point.

gdbExtDBFieldTypeBit

VT_BOOL

Logical value.

gdbExtDBFieldTypeTinyInt

VT_I4

Integer. The overflow may occur while setting a value because a range of VT_I4 is wider than that of gdbExtDBFieldTypeTinyInt.

gdbExtDBFieldTypeSmallint

VT_I4

Integer. The overflow may occur while setting a value because a range of VT_I4 is wider than that of gdbExtDBFieldTypeSmallint.

gdbExtDBFieldTypeInteger

VT_I4

Integer

gdbExtDBFieldTypeBigInt

VT_BSTR

String – character representation of an integer.

gdbExtDBFieldTypeReal

VT_R8

Float. The overflow may occur while setting a value because a range of VT_R8 is wider than that of gdbExtDBFieldTypeReal.

gdbExtDBFieldTypeFloat

VT_R8

Float. Ranging from ±4.19?10–308 to ±1.67?10308. Mantissa precision: 15 decimal digits.

gdbExtDBFieldTypeDouble

VT_R8

Float. Ranging from ±4.19?10–308 to ±1.67?10308. Mantissa precision: 15 decimal digits.

gdbExtDBFieldTypeBinary

SAFEARRAY with elements of type VT_UI1

Array of bytes. The array length in bytes is determined by the Field::Precision property.

gdbExtDBFieldTypeVarBinary

SAFEARRAY with elements of type VT_UI1

The maximum array length in bytes is determined by the Field::Precision property.

gdbExtDBFieldTypeLongVarBinary

SAFEARRAY with elements of type VT_UI1

Array of bytes. If the full extraction is not set for BLOB fields while retrieving the field value by the Field::Value property, the value is truncated. The maximum length of retrieved characters is determined by the Recordset::MaxBLOBLength property. If the full extraction is set, the full value of BLOB field can be retrieved using the Field::PutTo method. If you want to set the value of BLOB field when the full extraction is on, use the Field::GetFrom method (it is impossible to use the Field::Value property in this case).

gdbExtDBFieldTypeDate

VT_DATE

Data. The possible range depends on an ODBC data source.

gdbExtDBFieldTypeTime

VT_DATE

Time. The possible range depends on an ODBC data source.

gdbExtDBFieldTypeTimeStamp

VT_DATE

Timestamp. The possible range depends on an ODBC data source.

empty value in a field

VT_NULL