IDataConvert::DataConvert
Converts the data from the source type to the destination type.
Syntax
HRESULT DataConvert (
DBTYPE wSrcType,
DBTYPE wDstType,
DBLENGTH cbSrcLength,
DBLENGTH * pcbDstLength,
void * pSrc,
void * pDst,
DBLENGTH cbDstMaxLength,
DBSTATUS dbsSrcStatus,
DBSTATUS * pdbsStatus,
BYTE bPrecision,
BYTE bScale,
DBDATACONVERT dwFlags);
Parameters
wSrcType
[in] The source type of the data to be converted.wDstType
[in] The destination type of the data to be converted.DataConvert function does properly apply the scale input parameter when the destination data type is DB_TYPE_NUMERIC. There is a new DBDATACONVERT flag, DBDATACONVERT_DECIMALSCALE that instructs DataConvert to scale on conversion to DB_TYPE_NUMERIC.
cbSrcLength
[in] The length of the source data in bytes.pcbDstLength
[out] A pointer to memory in which to return the length in bytes of the output data after conversion.pSrc
[in] A pointer to the source data. This is a pointer to the underlying data type, based on the value of wSrcType. For example, this would be the address of the BSTR pointer if wSrcType is DBTYPE_BSTR, not the BSTR pointer itself.pDst
[out] A pointer to memory in which to return the destination data. As in the case of pSrc, this is a pointer to the underlying data type, based on the value of wDstType.cbDstMaxLength
[in] The maximum allowable length of the destination data in bytes. This is used only for variable-length destination data types.dbsSrcStatus
[in] The status value for the source data.pdbsStatus
[out] A pointer to the status for the conversion.bPrecision
[in] The precision of the output data in bytes, if applicable. This argument is used when converting to DBTYPE_NUMERIC data only.bScale
[in] The scale of the output data in bytes, if applicable. This argument is used when converting to DBTYPE_NUMERIC data only.dwFlags
[in] The data conversion flag indicating the requested conversion behavior. These flags can be combined.The following flags are available:
typedef DWORD DBDATACONVERT; enum DBDATACONVERTENUM { DBDATACONVERT_DEFAULT = 0, DBDATACONVERT_SETDATABEHAVIOR = 0x1, DBDATACONVERT_LENGTHFROMNTS = 0x2, DBDATACONVERT_DSTISFIXEDLENGTH = 0x4, DBDATACONVERT_DECIMALSCALE = 0x8 } ;
The DBDATACONVERT_SETDATABEHAVIOR flag indicates that data truncation is an error and that the memory pointed to by pDst will not be changed if any error occurs.
The DBDATACONVERT_LENGTHFROMNTS flag indicates that the data conversion library should calculate cbSrcLength for string (DBTYPE_STR, DBTYPE_WSTR) source data.
Return Code
S_OK
The conversion succeeded.E_FAIL
pSrc was a null pointer.E_OUTOFMEMORY
The data conversion object was unable to allocate memory.DB_E_BADBINDINFO
The source or destination data type was invalid.DB_E_DATAOVERFLOW
The requested conversion resulted in an overflow.DB_E_ERRORSOCCURRED
Errors occurred while converting data. The requested conversion can fail for a number of reasons, including the following:The source data was unavailable.
Data truncation occurred.
The precision and scale arguments did not make sense for the data type.
There was an invalid character or second decimal point in the source data.
DB_E_UNSUPPORTEDCONVERSION
The requested conversion was not supported.