_variant_t vparam;
CString   s1;
vparam=pRst->GetCollect("Name");
s1=(char*)(_bstr_)vparam;注:数据库是sqlserver 2000,已经连接好了,能运行而且有结果,只是结果和预想的不一样,
在跟踪s1时显示CXX0017:Error:symbol "s1" not found 是怎么回事,该如何改正?谢谢!

解决方案 »

  1.   

    你这样直接给CString赋值是肯定不行的,改成这样试试
    s1=CString ( (char*)(_bstr_)vparam )
      

  2.   


    我以为进到DELPHI版块了,快老眼昏花了。才疏学浅没看出错误来。
    难道是WIN32程序,不使用MFC库?
      

  3.   

    CString 有很多重载函数,这并不是不行,如:不管是不是 UNICODE 环境,以下赋值都是正确的:CString str = "Hello!";
      

  4.   

    s1=(LPCSTR)_bstr_t(vparam);
    强制转化就行啊
      

  5.   

    CString  s1; 
    vparam=pRst->GetCollect("Name"); 
    s1=(char*)(_bstr_)vparam; S1是一个字符串,
    (char*)(_bstr_)vparam 是一个指针
    他们怎么可以直接赋值呢?
      

  6.   

    _variant_t vtTelNo;
    CString strTelNo;
    vtTelNo = rsTt->GetCollect("mobilecode");
    strTelNo = (vtTelNo.vt!=NULL)?(LPCTSTR)(_bstr_t)vtTelNo:"";
    用是可以用的,防止取到空值,格式如上
      

  7.   

    CString  s1; 
    vparam=pRst->GetCollect("Name"); 
    s1=(char*)(_bstr_t)vparam;你的写错了 (char*)(_bstr_)少个字母t
      

  8.   

    sl=(char*)(_bstr_t)pRst->->GetCollect("Name");
      

  9.   

    sl=(char*)(_bstr_t)pRst->GetCollect("Name");
      

  10.   

    谢谢各位!一下是我的尝试,但是s1都没有值
    while(!pRst->rsEOF)
    {
    _variant_t vparam;
    vparam=pRst->GetCollect("Name");
            s1=(char*)(_bstr_t)vparam;
    //s1=::SysAllocString((_bstr_t)vparam); 
    //s1=CString((char*)(_bstr_t)vparam);
    //s1=(char*)(_bstr_t)pRst->GetCollect("Name");
    //s1=vparam.bstrVal;
    //s1=(LPSTR)(_bstr_t)vparam;
    //s1=(vparam.vt!=NULL)?(LPCTSTR)(_bstr_t)vparam:""; //s1=(char *)(_bstr_t)pRst->GetCollect("Name");
    //vparam=pRst->GetCollect("Name");
    //strcpy(s1,(LPCSTR)(_bstr_t)vparam3);
                            pRst->MoveNext();
            }