/*######################################################################## ------------------------------------------------ 数值类型转换 ------------------------------------------------ ########################################################################*/ COleDateTime vartodate(const _variant_t& var) { COleDateTime value; switch (var.vt) { case VT_DATE: { value = var.date; } break; case VT_EMPTY: case VT_NULL: value.SetStatus(COleDateTime::null); break; default: value.SetStatus(COleDateTime::null); TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__); } return value; }COleCurrency vartocy(const _variant_t& var) { COleCurrency value; switch (var.vt) { case VT_CY: value = (CURRENCY)var.cyVal; break; case VT_EMPTY: case VT_NULL: value.m_status = COleCurrency::null; break; default: value.m_status = COleCurrency::null; TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__); } return value; }bool vartobool(const _variant_t& var) { bool value = false; switch (var.vt) { case VT_BOOL: value = var.boolVal ? true : false; case VT_EMPTY: case VT_NULL: break; default: TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__); } return value; }BYTE vartoby(const _variant_t& var) { BYTE value = 0; switch (var.vt) { case VT_I1: case VT_UI1: value = var.bVal; break; case VT_NULL: case VT_EMPTY: value = 0; break; default: TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__); } return value; }short vartoi(const _variant_t& var) { short value = 0; switch (var.vt) { case VT_BOOL: value = var.boolVal; break; case VT_UI1: case VT_I1: value = var.bVal; break; case VT_I2: case VT_UI2: value = var.iVal; break; case VT_NULL: case VT_EMPTY: value = 0; break; default: TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__); } return value; }long vartol(const _variant_t& var) { long value = 0; switch (var.vt) { case VT_BOOL: value = var.boolVal; break; case VT_UI1: case VT_I1: value = var.bVal; break; case VT_UI2: case VT_I2: value = var.iVal; break; case VT_I4: case VT_UI4: value = var.lVal; break; case VT_INT: value = var.intVal; break; case VT_R4: value = (long)(var.fltVal + 0.5); break; case VT_R8: value = (long)(var.dblVal + 0.5); break; case VT_DECIMAL: value = (long)var; break; case VT_CY: value = (long)var; break; case VT_BSTR://字符串 case VT_LPSTR://字符串 case VT_LPWSTR://字符串 value = atol((LPCTSTR)(_bstr_t)var); break; case VT_NULL: case VT_EMPTY: value = 0; break; default: TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__); } return value; }double vartof(const _variant_t& var) { double value = 0; switch (var.vt) { case VT_R4: value = var.fltVal; break; case VT_R8: value = var.dblVal; break; case VT_DECIMAL: value = (double)var; break; case VT_CY: value = (double)var; break; case VT_BOOL: value = var.boolVal; break; case VT_UI1: case VT_I1: value = var.bVal; break; case VT_UI2: case VT_I2: value = var.iVal; break; case VT_UI4: case VT_I4: value = var.lVal; break; case VT_INT: value = var.intVal; break; case VT_BSTR://字符串 case VT_LPSTR://字符串 case VT_LPWSTR://字符串 value = atof((LPCTSTR)(_bstr_t)var); break; case VT_NULL: case VT_EMPTY: value = 0; break; default: value = 0; TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__); } return value; }CString vartostr(const _variant_t &var) { CString strValue;
switch (var.vt) { case VT_BSTR://字符串 case VT_LPSTR://字符串 case VT_LPWSTR://字符串 strValue = (LPCTSTR)(_bstr_t)var; break; case VT_I1: case VT_UI1: strValue.Format("%d", var.bVal); break; case VT_I2://短整型 strValue.Format("%d", var.iVal); break; case VT_UI2://无符号短整型 strValue.Format("%d", var.uiVal); break; case VT_INT://整型 strValue.Format("%d", var.intVal); break; case VT_I4: //整型 strValue.Format("%d", var.lVal); break; case VT_I8: //长整型 strValue.Format("%d", var.lVal); break; case VT_UINT://无符号整型 strValue.Format("%d", var.uintVal); break; case VT_UI4: //无符号整型 strValue.Format("%d", var.ulVal); break; case VT_UI8: //无符号长整型 strValue.Format("%d", var.ulVal); break; case VT_VOID: strValue.Format("%8x", var.byref); break; case VT_R4://浮点型 strValue.Format("%.4f", var.fltVal); break; case VT_R8://双精度型 strValue.Format("%.8f", var.dblVal); break; case VT_DECIMAL: //小数 strValue.Format("%.8f", (double)var); break; case VT_CY: { COleCurrency cy = var.cyVal; //strValue = cy.Format(); strValue = cy.Format(0, MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE), SORT_DEFAULT)); } break; case VT_BLOB: case VT_BLOB_OBJECT: case 0x2011: strValue = "[BLOB]"; break; case VT_BOOL://布尔型 strValue = var.boolVal ? "TRUE" : "FALSE"; break; case VT_DATE: //日期型 { DATE dt = var.date; COleDateTime da = COleDateTime(dt); strValue = da.Format("%Y-%m-%d %H:%M:%S"); } break; case VT_NULL://NULL值 strValue = ""; break; case VT_EMPTY://空 strValue = ""; break; case VT_UNKNOWN://未知类型 default: strValue = "UN_KNOW"; break; } return strValue; }求给分...
/*########################################################################
------------------------------------------------
数值类型转换
------------------------------------------------
########################################################################*/
COleDateTime vartodate(const _variant_t& var)
{
COleDateTime value;
switch (var.vt)
{
case VT_DATE:
{
value = var.date;
}
break;
case VT_EMPTY:
case VT_NULL:
value.SetStatus(COleDateTime::null);
break;
default:
value.SetStatus(COleDateTime::null);
TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
}
return value;
}COleCurrency vartocy(const _variant_t& var)
{
COleCurrency value;
switch (var.vt)
{
case VT_CY:
value = (CURRENCY)var.cyVal;
break;
case VT_EMPTY:
case VT_NULL:
value.m_status = COleCurrency::null;
break;
default:
value.m_status = COleCurrency::null;
TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
}
return value;
}bool vartobool(const _variant_t& var)
{
bool value = false;
switch (var.vt)
{
case VT_BOOL:
value = var.boolVal ? true : false;
case VT_EMPTY:
case VT_NULL:
break;
default:
TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
}
return value;
}BYTE vartoby(const _variant_t& var)
{
BYTE value = 0;
switch (var.vt)
{
case VT_I1:
case VT_UI1:
value = var.bVal;
break;
case VT_NULL:
case VT_EMPTY:
value = 0;
break;
default:
TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
}
return value;
}short vartoi(const _variant_t& var)
{
short value = 0;
switch (var.vt)
{
case VT_BOOL:
value = var.boolVal;
break;
case VT_UI1:
case VT_I1:
value = var.bVal;
break;
case VT_I2:
case VT_UI2:
value = var.iVal;
break;
case VT_NULL:
case VT_EMPTY:
value = 0;
break;
default:
TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
}
return value;
}long vartol(const _variant_t& var)
{
long value = 0;
switch (var.vt)
{
case VT_BOOL:
value = var.boolVal;
break;
case VT_UI1:
case VT_I1:
value = var.bVal;
break;
case VT_UI2:
case VT_I2:
value = var.iVal;
break;
case VT_I4:
case VT_UI4:
value = var.lVal;
break;
case VT_INT:
value = var.intVal;
break;
case VT_R4:
value = (long)(var.fltVal + 0.5);
break;
case VT_R8:
value = (long)(var.dblVal + 0.5);
break;
case VT_DECIMAL:
value = (long)var;
break;
case VT_CY:
value = (long)var;
break;
case VT_BSTR://字符串
case VT_LPSTR://字符串
case VT_LPWSTR://字符串
value = atol((LPCTSTR)(_bstr_t)var);
break;
case VT_NULL:
case VT_EMPTY:
value = 0;
break;
default:
TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
}
return value;
}double vartof(const _variant_t& var)
{
double value = 0;
switch (var.vt)
{
case VT_R4:
value = var.fltVal;
break;
case VT_R8:
value = var.dblVal;
break;
case VT_DECIMAL:
value = (double)var;
break;
case VT_CY:
value = (double)var;
break;
case VT_BOOL:
value = var.boolVal;
break;
case VT_UI1:
case VT_I1:
value = var.bVal;
break;
case VT_UI2:
case VT_I2:
value = var.iVal;
break;
case VT_UI4:
case VT_I4:
value = var.lVal;
break;
case VT_INT:
value = var.intVal;
break;
case VT_BSTR://字符串
case VT_LPSTR://字符串
case VT_LPWSTR://字符串
value = atof((LPCTSTR)(_bstr_t)var);
break;
case VT_NULL:
case VT_EMPTY:
value = 0;
break;
default:
value = 0;
TRACE(_T("Warning: 未处理的 _variant_t 类型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
}
return value;
}CString vartostr(const _variant_t &var)
{
CString strValue;
switch (var.vt)
{
case VT_BSTR://字符串
case VT_LPSTR://字符串
case VT_LPWSTR://字符串
strValue = (LPCTSTR)(_bstr_t)var;
break;
case VT_I1:
case VT_UI1:
strValue.Format("%d", var.bVal);
break;
case VT_I2://短整型
strValue.Format("%d", var.iVal);
break;
case VT_UI2://无符号短整型
strValue.Format("%d", var.uiVal);
break;
case VT_INT://整型
strValue.Format("%d", var.intVal);
break;
case VT_I4: //整型
strValue.Format("%d", var.lVal);
break;
case VT_I8: //长整型
strValue.Format("%d", var.lVal);
break;
case VT_UINT://无符号整型
strValue.Format("%d", var.uintVal);
break;
case VT_UI4: //无符号整型
strValue.Format("%d", var.ulVal);
break;
case VT_UI8: //无符号长整型
strValue.Format("%d", var.ulVal);
break;
case VT_VOID:
strValue.Format("%8x", var.byref);
break;
case VT_R4://浮点型
strValue.Format("%.4f", var.fltVal);
break;
case VT_R8://双精度型
strValue.Format("%.8f", var.dblVal);
break;
case VT_DECIMAL: //小数
strValue.Format("%.8f", (double)var);
break;
case VT_CY:
{
COleCurrency cy = var.cyVal;
//strValue = cy.Format();
strValue = cy.Format(0, MAKELCID(MAKELANGID(LANG_CHINESE,
SUBLANG_CHINESE_SINGAPORE), SORT_DEFAULT));
}
break;
case VT_BLOB:
case VT_BLOB_OBJECT:
case 0x2011:
strValue = "[BLOB]";
break;
case VT_BOOL://布尔型 strValue = var.boolVal ? "TRUE" : "FALSE";
break;
case VT_DATE: //日期型
{
DATE dt = var.date;
COleDateTime da = COleDateTime(dt);
strValue = da.Format("%Y-%m-%d %H:%M:%S");
}
break;
case VT_NULL://NULL值
strValue = "";
break;
case VT_EMPTY://空
strValue = "";
break;
case VT_UNKNOWN://未知类型
default:
strValue = "UN_KNOW";
break;
}
return strValue;
}求给分...
strValue = (LPCTSTR)(_bstr_t)var;我就是用这个转换的,转换后有空格
可是我看了数据库里面,各个值没有加那么多空格啊
我是没心情研究那些东西),_bstr_t 可以说是万能类型....看看他的定义类型...
vs2008可以直接使用
cstring cs=rs.getcolect(...)