_RecordsetPtr m_pRecordset;
         _variant_t temp = m_pRecordset->GetCollect("Sfileid");
temp = _variant_t(1,VT_I4);//error C2668: '_variant_t::_variant_t' :ambiguous call to overloaded function
int i;
i = temp.lVal;
这句这么写到底哪里错了呢?我想吧_variant_t 型的temp 转化为 int型的i,请问应该怎么转化呢?

解决方案 »

  1.   

    改写成如下之后编译可以通过,但是执行的时候会出现问题
    _RecordsetPtr m_pRecordset;
             _variant_t temp = m_pRecordset->GetCollect("Sfileid"); CString tem = (LPCSTR)_bstr_t(temp);
    atoi(tem);运行到:_variant_t temp = m_pRecordset->GetCollect("Sfileid");这一句时就会出现错误,错误提示是“This appication has requested the Runtime to terminate it in an unusual way.”这是怎么回事事呢?
      

  2.   

    你的执行m_pRecordset->Open了吗?没有打开怎么得到列名
      

  3.   

    问题出在你的转换上,应该改成int ii = atoi(tem.GetBuffer(0));
      

  4.   

    1、运行到:_variant_t temp = m_pRecordset->GetCollect("Sfileid");这一句时就会出现错误,
    --------------------------
    m_pRecordset还没有Open。
    2、int iTmp = temp.intVal;  //或者 iTmp = temp.iVal;  ???
      

  5.   

    我的m_pRecordset是在另外一个类的头文件中定义的,我把那个头文件包含在了我的.cpp文件中了,可是为什么编译的时候显示的是没有定义的文件类型呢?
      

  6.   

    m_pRecordset还没有Open。
    --------------
    Open那句怎么写呢?
      

  7.   

    在cpp中定义 _RecordsetPtr m_pRecordset;
    在h中声明 extern _RecordsetPtr m_pRecordset;
      

  8.   

    比如:
    m_pRecordset->Open("SELECT * FROM 车辆信息",               
    m_pConnection.GetInterfacePtr(),
    adOpenDynamic,
    adLockOptimistic,
    adCmdText);