利用DAO操作ACCESS数据库,但是有一个字段是备注型的,我不知道该如何进行操作COleVariant varValue;
m_pRecordSet->GetFieldValue(j, varValue);//得到备注字段的内容,这样可以吗?
const VARIANT* variant = LPCVARIANT(varValue);
switch(variant->vt) ???后面怎么判断呢?是判断是否为VT_BSTR吗?还有,取出来的内容是放在CString 中吗?我听说好象CString的字符长度不能超过255啊!!谢谢大家拉!

解决方案 »

  1.   

    没有255的限制A   CString   object   can   store   up   to   INT_MAX   (2,147,483,647)   characters
    调试窗口看到的是255个长度限制
      

  2.   

    那么switch(variant->vt)呢?是VT_BSTR吗?那么备注型和文本型有什么不同啊!
      

  3.   

    CString g_VariantToCString(VARIANT var)
    {
    CString strValue;
    _variant_t var_t;
    _bstr_t bst_t;
    time_t cur_time;
    CTime time_value;
    COleCurrency var_currency;
    switch(var.vt)
    {
    case VT_EMPTY:strValue=_T("");break;
    case VT_UI1:strValue.Format ("%d",var.bVal);break;
    case VT_I2:strValue.Format ("%d",var.iVal );break;
    case VT_I4:strValue.Format ("%d",var.lVal);break;
    case VT_R4:strValue.Format ("%f",var.fltVal);break;
    case VT_R8:strValue.Format ("%f",var.dblVal);break;
    case VT_CY:
    var_currency=var;
    strValue=var_currency.Format(0);
    break;
    case VT_BSTR:
    var_t=var;
    bst_t=var_t;
    strValue.Format ("%s",(const char*)bst_t);
    break;
    case VT_NULL:strValue=_T("");break;
    case VT_DATE:
    cur_time = var.date;
    time_value = cur_time;
    strValue=time_value.Format("%A,%B%d,%Y");
    break;
    case VT_BOOL:strValue.Format ("%d",var.boolVal );break;
    default:strValue=_T("");break;
    }
    return strValue;
    }写了一个函数,直接调用就可以转换了,很简单