怎么把ADO读出来的记录转成Cstring类型
CString SqlStr;
SqlStr="Select * From T_Xian WHERE T_DWBM='"+m_rShi->GetCollect("R_MC")+"'";
这样为什么不行.

解决方案 »

  1.   

    刚才没注意看,tostring()是将整个记录转为STRING,
    照你的意思是要将某个字段内容化为String,
    那用m_rShi->GetCollect("R_MC")->bstrVal
      

  2.   

    不说别的。光你那句话就是错的。
    c++中不允许。你那是vb的语法?
    CString str="aaa"+"bbb";//这是错误的语法。!!
      

  3.   

    vC = m_pRecordset->GetCollect("C");
    m_strC = (LPCTSTR)(_bstr_t)vC ;C是表中字段名,vC是_variant_t类型;
    m_strC是CString类型
      

  4.   

    传入的参数是你得道的ado的值
    CString Format(_variant_t var)
    {
    DATE dt;
    COleDateTime da;
    CString strValue;

    switch (var.vt)
    {
    case VT_BSTR://字符串
    case VT_LPSTR://字符串
    case VT_LPWSTR://字符串
    strValue = (LPCTSTR)(_bstr_t)var;
    break;
    case VT_I2://短整型
    strValue.Format("%d", var.iVal);
    break;
    case VT_UI2://无符号短整型
    strValue.Format("%d", var.uiVal);
    break;
    case VT_VOID://
    case VT_INT://整型
    case VT_I4://整型
    strValue.Format("%d", var.intVal);
    break;
    case VT_I8://长整型
    strValue.Format("%d", var.lVal);
    break;
    case VT_UINT://无符号整型
    case VT_UI4://无符号整型
    strValue.Format("%d", var.uintVal);
    break;
    case VT_UI8://无符号长整型
    strValue.Format("%d", var.ulVal);
    break;
    case VT_R4://浮点型
    strValue.Format("%.4f", var.fltVal);
    break;
    case VT_R8://双精度型
    strValue.Format("%.8f", var.dblVal);
    break;
    case VT_DECIMAL: //小数
    strValue.Format("%.4f", var.decVal);
    break;
    case VT_BOOL://布尔型
    strValue = var.lVal ? "TRUE" : "FALSE";
    break;
    case VT_DATE: //日期型
    dt = var.date;
    da = COleDateTime(dt); 
    strValue = da.Format("%Y-%m-%d %H:%M:%S");
    break;
    case VT_NULL://NULL值
    strValue = "NULL";
    break;
    case VT_EMPTY://空
    strValue = "";
    break;
    case VT_UNKNOWN://未知类型
    default:
    strValue = "UN_KNOW";
    break;
    }
    return strValue;
    }