怎么读取一个Access表中某一列的字段的数据类型?数据库用ADO连接

如何读取一个Access表中某一列的字段的数据类型?数据库用ADO连接。
sql = "select* from user";
_RecordsetPtr res;
res=m_AdoConn.GetRecordSet(sql);

FieldsPtr fields = res->Fields;
ic = fields->Count;
   
long i = 1;
{
_variant_t var;
var= fields->GetItem(_variant_t(i))->Name;
CString str=(LPCTSTR)_bstr_t(var); 
GetDlgItem(IDC_NAME)->SetWindowText(str);
}
这样获得了某一列的字段名。然后我想获得它的数据类型、
{
_variant_t var1;


var1= fields->GetItem(_variant_t(i))->Type;
CString str1=(LPCTSTR)_bstr_t(var1); 

GetDlgItem(IDC_TYPE)->SetWindowText(str1);
}
报错:error C2593: 'operator =' is ambiguous
该怎样改才可以得到该字段的数据类型??

------解决方案--------------------
“然后我想获得它的数据类型:
_variant_t var;
var = fields->GetItem(_variant_t(i))->Type;

--------------------------------------------------
以下代码可以来判断你获取到的列的数据类型,以及列的值

std::string strValue;
std::ostringstream os;
switch (var.vt)
{
case VT_BSTR://字符串
case VT_LPSTR://字符串
case VT_LPWSTR://字符串
strValue = (LPCTSTR)(_bstr_t)var;
break;
case VT_I1:
case VT_UI1:
os.operator <<(var.bVal);
strValue = os.str();
  break;
case VT_I2://短整型
os.operator <<(var.iVal);
strValue = os.str();
break;
case VT_UI2://无符号短整型
os.operator <<(var.uiVal);
strValue = os.str();
break;
case VT_INT://整型
os.operator <<(var.intVal);
strValue = os.str();
break;
case VT_I4: //整型
os.operator <<(var.lVal);
strValue = os.str();
break;
case VT_I8: //长整型
os.operator <<(var.lVal);
strValue = os.str();
break;
case VT_UINT://无符号整型
os.operator <<(var.uintVal);
strValue = os.str();
break;
case VT_UI4: //无符号整型
os.operator <<(var.ulVal);
strValue = os.str();
break;
case VT_UI8: //无符号长整型
os.operator <<(var.ulVal);
strValue = os.str();
break;
case VT_VOID:
os.operator <<(var.byref);
strValue = os.str();
break;
case VT_R4://浮点型
os.operator <<(var.fltVal);
strValue = os.str();
break;
case VT_R8://双精度型
os.operator <<(var.dblVal);
strValue = os.str();
break;
case VT_DECIMAL: //小数
os.operator <<((double)var);
strValue = os.str();
break;
case VT_CY:
strValue = (char* )(_bstr_t)var;
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: //日期型
strValue = (char* )(_bstr_t)var;
break;
case VT_NULL://NULL值
strValue = "";
break;
case VT_EMPTY://空
strValue = "";
break;
case VT_UNKNOWN://未知类型
default:
strValue = "UN_KNOW";
break;
}
return strValue;
------解决方案--------------------
探讨
引用:
你所说的数据类型指的是什么?

谢谢您的关注!我说的数据类型是打开数据库,从设计视图打开表,所看到的数据类型。
比如说Access表,打开设计视图,会看到字段名称,数据类型,说明,共三列。第一列的值已经得到,我想获得第二列的值。有什么办法?

------解决方案--------------------
Cstring m_strCollege就是你要得到的“数据类型”值
------解决方案--------------------
探讨