string to currency:
case adCurrency:
var->vt = VT_CY;
cy.Lo = atoi(strValue);
cy.int64 = atoi(strValue);
var->cyVal = cy;
break;currency to string:
case VT_CY: 
var_currency = var;
strValue = var_currency.Format(0);
break; 
这样哪里不对?

解决方案 »

  1.   

    既然你使用了VARIANT,那就用不着那么麻烦CString str;
    COleCurrency cur;String To Currency:
    _variant_t var(str);
    var.ChangeType(VT_CY);
    cur = var.cyVal;Currency To String:
    _variant_t var(cur);
    var.ChengeType(VT_BSTR);
    str = var.bstrVal;
      

  2.   

    COleVariant转换为CString 
             
            COleVariant是数据库常用到的数据类型。它可以是字串,整型值,日期等。知道怎样将它转换为CString很有用处。        设有CString A; COleVariant B; 来看看怎样将COleVariant转换为CString:        switch(B.vt){            case VT_BSTR:  A=V_BSTRT(&B); break;//COleVariant是一个字串            case VT_I2:  A.Format(_T("%hd"),V_I2(&B));break;//是短整型            case VT_I4:  A.Format(_T("%d"),V_I4(&B));break;//是长整型            case VT_R4:  A.Format(_T("%e"),(double)V_R4(&B));break;//是浮点数            case VT_R8:  A.Format(_T("%e"),V_R8(&B));break;//是浮点数            case VT_CY:  A=COleCurrency(B).Format();break;//是货币值            case VT_DATE: A=COleDateTime(B).Format("%Y-%m-%d");break;//是日期            case VT_BOOL: A=V_BOOL(&B)?"True":"False";break;//是布尔值       }