一个DAO操作ACCESS数据库的简单问题!

stonehe 2007-07-24 08:59:53
利用DAO操作ACCESS数据库,但是有一个字段是备注型的,我不知道该如何进行操作

COleVariant varValue;
m_pRecordSet->GetFieldValue(j, varValue);//得到备注字段的内容,这样可以吗?
const VARIANT* variant = LPCVARIANT(varValue);
switch(variant->vt) ???后面怎么判断呢?是判断是否为VT_BSTR吗?

还有,取出来的内容是放在CString 中吗?我听说好象CString的字符长度不能超过255啊!!

谢谢大家拉!
...全文
191 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
handsomerun 2007-07-24
  • 打赏
  • 举报
回复
没有255的限制

A CString object can store up to INT_MAX (2,147,483,647) characters


调试窗口看到的是255个长度限制
soft_tl 2007-07-24
  • 打赏
  • 举报
回复
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;
}

写了一个函数,直接调用就可以转换了,很简单
stonehe 2007-07-24
  • 打赏
  • 举报
回复
那么switch(variant->vt)呢?是VT_BSTR吗?那么备注型和文本型有什么不同啊!
VC DAO 操作Access的测试例子,本演示是VC 使用DAO连接Access数据库一个测试程序,学习如何使用DAO操作Access,通过添加一个数据库记录来演示添加、删除、插入数据的例子,比较简单,面向VC 初学者的一个例子。部分代码分享如下:   // 取得被选择记录的索引   nIndexInFieldList = m_listctrlInfo.GetNextSelectedItem(pos);   // 高亮被的选择记录   m_listctrlInfo.SetFocus();   // 从文件中把当前行记录删除   // 获取数据库文件   m_csDatebaseFile = GetDatabaseFile();   // 判断数据库是否已经打开   if (!m_bIsOpenDB)   {    db.Open(m_csDatebaseFile);    // 判断数据集是否已经打开    if (!m_bIsOpenDSN)    {    RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM PositionTable",NULL);    }   }   m_nTotal = m_listctrlInfo.GetItemCount();   m_nCurrentIndex = ConvertIndex(nIndexInFieldList,m_nTotal - 1);   RecSet.MoveFirst();   RecSet.Move(long(m_nCurrentIndex));   RecSet.Delete();   ClearContent();   // 删除被的选择记录   m_listctrlInfo.DeleteItem( nIndexInFieldList );   // 显示删除数据成功的信息   GetDlgItem(IDC_STATIC_INFO)->SetWindowText(_T("删除数据成功!"));   // 再次取得第一条记录的位置   POSITION pos = m_listctrlInfo.GetFirstSelectedItemPosition();   UINT flag = LVIS_SELECTED|LVIS_FOCUSED;   m_listctrlInfo.SetItemState( nIndexInFieldList, flag, flag );

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧