小弟编了一个代码:
COleVariant var; // 字段类型
long lID;
CString strIP;
var.ChangeType(VT_BSTR|VT_BYREF, NULL);
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM routerlist",NULL);
while(!RecSet.IsEOF()) // 有没有到表结尾
{
RecSet.GetFieldValue("EqiupID",var);
lID = (long)var.pbVal;//此处希望读出一long型量 RecSet.GetFieldValue("IPAddress",var);
strIP = (LPCSTR)var.pbstrVal;//此处希望读出一str类型量
RecSet.MoveNext();
}
运行时系统报错:类型不匹配
怎么改??
COleVariant var; // 字段类型
long lID;
CString strIP;
var.ChangeType(VT_BSTR|VT_BYREF, NULL);
RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM routerlist",NULL);
while(!RecSet.IsEOF()) // 有没有到表结尾
{
RecSet.GetFieldValue("EqiupID",var);
lID = (long)var.pbVal;//此处希望读出一long型量 RecSet.GetFieldValue("IPAddress",var);
strIP = (LPCSTR)var.pbstrVal;//此处希望读出一str类型量
RecSet.MoveNext();
}
运行时系统报错:类型不匹配
怎么改??
解决方案 »
- 关于一结构指针数组,使用memcpy截取部分的疑问
- VC 6.0+Microsoft SQL Server 做的程序用什么发布?怎么发布? 运行安装程序就可以用的那种
- 如何分割界面?
- com调用问题:错误码0x80040154,错误信息"没有注册类别"
- 请问消息中间件的原理是什么,有什么书可以推荐一下吗?
- 关于函数IsDBCSLeadByte的问题
- 上传文件问题
- 一个图书销售系统(程序还是有问题),请求帮助
- 请帮忙想一条sql语句
- vs2010开发环境中该用哪个模块来编写如图所示的Help界面
- 怎么得到机器的 IP,subnet mask?
- 公司面试时给的一个编程题目!有兴趣的帮忙看看 !~谢谢
strIP = (LPCSTR)var.pbstrVal;
改成
strIP = var.bstrVal; 试试
int CsRecordSet::GetInteger(LPCTSTR strField)
{
CString strValue(_T(""));
int nValue = 0;
_variant_t varFieldValue;
if (m_bValid)
{
varFieldValue = m_pRecordset->GetCollect(strField);
switch(varFieldValue.vt)
{
case VT_NULL:
break;
case VT_BSTR:
strValue = varFieldValue.bstrVal;
if (strValue != _T(""))
_stscanf((LPCTSTR)strValue, _T("%d"), &nValue);
break;
case VT_I2:
case VT_I4:
case VT_INT:
nValue = varFieldValue.intVal;
break;
case VT_UI2:
case VT_UI4:
case VT_UINT:
nValue = (int)varFieldValue.uintVal;
default:
break;
}
}
return nValue;
}CString CsRecordSet::GetString(LPCTSTR strField)
{
CString strValue(_T(""));
_variant_t varFieldValue;
if (m_bValid)
{
try
{
varFieldValue = m_pRecordset->GetCollect(strField);
switch(varFieldValue.vt)
{
case VT_NULL:
break;
case VT_BSTR:
strValue = varFieldValue.bstrVal;
break;
case VT_I2:
case VT_I4:
case VT_INT:
strValue.Format(_T("%d"), varFieldValue.intVal);
break;
case VT_UI2:
case VT_UI4:
case VT_UINT:
strValue.Format(_T("%u"), varFieldValue.uintVal);
break;
default:
break;
}
}
catch (_com_error)
{
}
} return strValue;
}