IDataConvert. You need something like this; DB_NUMERIC dbnumeric ; double dbl; IDataConvert* pCon = NULL; CoCreateInstance(CLSID_OLEDB_CONVERSIONLIBRARY, NULL, CLSCTX_INPROC, IID_IDataConvert, reinterpret_cast(&pCon)); if (SUCCEEDED(pCon->CanConvert(DBTYPE_NUMERIC,DBTYPE_R8))) { pCon->DataConvert(DBTYPE_NUMERIC, DBTYPE_R8, sizeof(struct tagDB_NUMERIC), &dbnumeric, reinterpret_cast(&dbl), sizeof(double)), DBSTATUS_S_OK, 0, dbnumeric.precision,dbnumeric.scale, DBDATACONVERT_DEFAULT); } pCon->Release(); I've omitted error checking on the CoCreateInstance and the conversion itself, but this should help. Steve S