那得看看你的字段是什么类型的。
一般用sprintf函数即可。
如sprintf(strBuf, "%S",m_varVariant.bstrVal)(字符串型)
sprintf(strBuf, "%S",m_varVariant.bstrVal)(字符串型)
sprintf(strBuf, "%ld",m_varVariant.lVal)(长整型)
sprintf(strBuf, "%d",m_varVariant.intVal)(int型)

解决方案 »

  1.   

    _variant_t vStr;
    .......//set the value
    CString str=vStr.bstrVal;
      

  2.   

    可以直接使用CString赋值, 如:
    ...
    CString strTemp = varVariant.bstrVal;
      

  3.   

    同意Qinriwei(Dawei)的,要看你的字段是什么类型
    可以先判断再转化
        _variant_t  var;
        CString str;
        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);
            TRACE("Unknown type %d\n", var.vt);
          }
          pDC->TextOut(x, y, str);
      

  4.   

    如果你已经知道了表的结构,就是说知道了每个字段的类型,那么 .ChangeType()
    就可以解决一切问题,
    如果你不知道表结构,那就要象panda_w兄说的那样,逐个判断了(别感觉到烦了,谁让我们干的是这编程的活呢)