将记录集中的变体(带有货币值)转换为格式正确的字符串

时间:2015-02-11 04:26:33

标签: c++ ms-access-2007 ado currency

我有一个查询,可以获得付款金额的价值。在MS Access数据库中,此字段为currency类型。

我需要在文本框中显示此值(我使用的是C ++和原始WinAPI for GUI),因此我需要知道如何将_variant_从记录集转换为正确的字符串(1,200.55)。 / p>

这是一个例子(记住,我使用原始的WinAPI和C ++ for GUI):

SetDlgItemText(hDlg, IDC_EDIT11, 
    pRS->Fields->GetItem(L"PaidValue")->Value.bstrVal); // problem is this line

运行程序时,我的文本框为空。

当我调试它时,它报告没有错误。

问题:

如何将_variant_t转换为字符串(1,200.00)?

1 个答案:

答案 0 :(得分:0)

CString GetString(_variant_t vValue)
{
    USES_CONVERSION;
    CString strValue("");
    if ((V_VT(&vValue) == VT_NULL) || (V_VT(&vValue) == VT_EMPTY))
        return strValue;

    if ((V_VT(&vValue) == VT_BSTR) || SUCCEEDED(VariantChangeType(&vValue, &vValue, 0, VT_BSTR)))
        strValue = OLE2T(V_BSTR(&vValue));

    return strValue;
}

CString strVal = GetString(pRS->Fields->Item["PaidValue"]->Value)