我们可以用以下方法将取得的类型转化为字符串
Holder = MySet->GetCollect("a");
if(Holder.vt!=VT_NULL)

。。
(char*)_bstr_t(Holder)


我们可以用这种方法将字段的内容转化为字符串,
如果数据类型是long或者日期类型,我们怎么转化呢?

解决方案 »

  1.   

    统一都转化为字符串
    然后再相应转化吧
    str = (char *)(_bstr_t)(m_pRs->Fields->GetItem(_variant_t("OTHERDEC"))->Value);
    转化为long 
    可以用atol()这个函数
    日期可能要自己分解吧
    gz
      

  2.   

    COleVariant covFieldValuel
        VARIANT vFieldValue
        CString Holder;
        MySet->GetFieldValue("FIELD_1", covFieldValue);
        vFieldValue = (LPVARIANT)covFieldValue;
        Holder.Format("%s",vFieldValue->pbVal);
        m_List.AddString(Holder);
      

  3.   

    日期型的可以使用COleDatetime::Format()
      

  4.   

    如果转换为long类型,则用
    long(Holder)如果转化为日期型的话,可以先转换:
    Holder.ChangeType(VT_BSTR);
    COleDateTime dt;
    dt.ParseDateTime((char*)_bstr_t(Holder),VAR_DATEVALUEONLY)就可以转换为日期()用COleDateTime来代替。
      

  5.   

    你可以在MySet->GetFieldValue("FIELD_1", covFieldValue);
    设置一个断点,然后看看covFieldValue里面的数据在什么里面,然后用相对代码就可以了。
    比如vFieldValue = (LPVARIANT)covFieldValue;
    你看一下会发现在pbVal里面,然后加上
        Holder.Format("%s",vFieldValue->pbVal);
    就一切ok,做多了以后,就不用跟踪了。。或者你也可以看一下msdn,里面有详细的定义。