COleVariant var;      
      var = m_pSet->GetFieldValue(i);
      switch (var.vt) {
      case VT_BSTR:
        str = (LPCSTR) var.bstrVal; // narrow characters in DAO
        break;
      case VT_I2:
        str.Format("%d", (int) var.iVal);
        break;
      case VT_I4:
        str.Format("%d", var.lVal);
        break;
      case VT_R4:
        str.Format("%10.2f", (double) var.fltVal);
        break;
      case VT_R8:
        str.Format("%10.2f", var.dblVal);
        break;
  case VT_CY:
        str = COleCurrency(var).Format();
        break;
      case VT_DATE:
        str = COleDateTime(var).Format();
        break;
      case VT_BOOL:
        str = (var.boolVal == 0) ? "FALSE" : "TRUE";
        break;
      case VT_NULL:
        str =  "----";
        break;
      default:
        str.Format("Unk type %d\n", var.vt);
       }

解决方案 »

  1.   

    上面的仁兄,能不能说得明白一点,如何“全部转换为CString型”????
    我也想有个简便点的方法 
      

  2.   

    天啊,这在VB里是多么不值一提的问题就没有个简便点的方法吗?
    VC封装的也太少了吧!!简直要把我吓跑
      

  3.   

    天啊,这在VB里是多么不值一提的问题,竟没有简便一点的方法吗?
    VC封装得也太少了吧
      

  4.   

    就是分不同情况,分别转换啊?
    switch (var.vt){            //var为取得的COleVariant 值,也就是数据库中的值
    case ...
    str  ... 
    }
      

  5.   

    switch(variant.vt){
    case VT_NULL:
    case VT_EMPTY:
    string.Empty();break;
    case VT_BSTR:
    string=(LPCTSTR)variant.pbstrVal;break;
    default:
    variant.ChangeType(VT_BSTR);
    string=V_BSTR(&variant);break;
    }