在用ado读出数据库中内容以后:
_ConnectionPtr newconn=databaseconn();
_RecordsetPtr myrec;
    myrec.CreateInstance("ADODB.Recordset");
myrec->Open("SELECT * FROM test",_variant_t((IDispatch*)newconn,true),adOpenStatic,adLockOptimistic,adCmdText);
    if(myrec->adoEOF)
{
MessageBox("hello");
}
else
{
_variant_t content;
    content=myrec->GetCollect("content");
m_result=(LPCTSTR)(_bstr_t)content;//这里出错
UpdateData(false);
}
请看到数第三行,为什么转换会有错误?m_result为UNIT类型。

解决方案 »

  1.   

    m_result=(UINT)(LPCTSTR)(_bstr_t)content;//试试这样
      

  2.   

    m_result是什么类型?
    content又是是什么类型?
      

  3.   

    m_result为UNIT类型。_variant_t content;
      

  4.   

    m_result=(LPCTSTR)(_bstr_t)content;//这里出错那这样子不是得到数符串吗?怎么可能得到m_result?
      

  5.   

    CString strValue;
             _variant_t var =  _variant_t(m_pRecordset1->GetFields()->GetItem("Eqp_factory")->Value)
             strValue.Format("%d<你需要的类型>", var );
      

  6.   

    真的不行啊,怎么办:(m_result是一个编辑框里的UINT变量,那一行提示的错误如下:
     cannot convert from 'const char *' to 'unsigned int'
            This conversion requires a reinterpret_cast, a C-style cast or function-style cast
      

  7.   

    这个编译错误这么办不就没了吗??m_result=(UINT)(LPCTSTR)(_bstr_t)content;
      

  8.   

    对,这样使可以通过编译,但是显示的就不是数据库里的字符串(content类型text)了,而是一堆数字啊
      

  9.   

    已经解决了,谢谢大家。我把m_result改为了CString类型就对了