如何通过使用CRecordSet.GetFieldValue方法获得数据库中指定字段的值.

xiaoer 2000-05-22 11:38:00
如何通过使用CRecordSet.GetFieldValue方法获得数据库中指定字段的值.最好能列出代码.小弟不胜感激.
...全文
844 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
anick 2000-05-22
  • 打赏
  • 举报
回复
你好这是我正在使用的程序主要用DAO来处理ACCSE数据库
CDaoTableDef Table(&m_DB);
try
{
Table.Open(TableName);
}
catch(CDaoException * e)
{
DisplayDaoException(e);
e->Delete();

}
CDaoRecordset rs(&m_DB);
try
{
rs.Open(&Table,dbOpenDynaset,
dbConsistent);
}
catch(CDaoException * e)
{
DisplayDaoException(e);
e->Delete();

}
rs.MoveFirst();
rs.Move(Row);
COleVariant Variant;
Variant=rs.GetFieldValue(Index);
if(rs.IsOpen())
rs.Close();
if(Table.IsOpen())
Table.Close();
return Variant;
superbat 2000-05-22
  • 打赏
  • 举报
回复
以下是我编的一个软件的部分代码:
CDBVariant varValue;
int i=0;
int k=0;
CString cap,cap1;
CString str;
m_rs.GetFieldValue("日期",varValue);
cap.Format("%d年%d月%d日",varValue.m_pdate->year,varValue.m_pdate->month,varValue.m_pdate->day);
listBar.m_Static.SetWindowText(cap);
weaBar.m_Static.SetWindowText(cap+"天气数据");
cap1.Format("%d-%d-%d",varValue.m_pdate->year,varValue.m_pdate->month,varValue.m_pdate->day);
m_rs2.m_strFilter="[日期]=#"+cap1+"#";
if(!m_rs2.IsOpen()) m_rs2.Open();
else m_rs2.Requery();
weaBar.m_wndList.DeleteAllItems();
if(!m_rs2.IsEOF())
{
for(k=1;k<m_rs2.GetODBCFieldCount();k++)
{
m_rs2.GetFieldValue(k,varValue);
switch(varValue.m_dwType)
{
case DBVT_DOUBLE:
str.Format("%.2f",varValue.m_dblVal);
break;
case DBVT_STRING:
str=*(varValue.m_pstring);
break;
}
if(k==1)
{
lvi.mask = LVIF_TEXT and LVIF_STATE;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.pszText = str.GetBuffer(str.GetLength());
lvi.stateMask = LVIS_STATEIMAGEMASK and LVIS_SELECTED;
lvi.state = INDEXTOSTATEIMAGEMASK(1);
weaBar.m_wndList.InsertItem(&lvi);
continue;
}
weaBar.m_wndList.SetItemText(0,k-1,str);
}

}
listBar.m_wndList.DeleteAllItems();
if(!m_rs.IsEOF())
{
for(k=1;k<m_rs.GetODBCFieldCount();k++)
{
lvi.mask = LVIF_TEXT and LVIF_STATE;
lvi.iItem = k-1;
lvi.iSubItem = 0;
str.Format("%d",k);
lvi.pszText = str.GetBuffer(str.GetLength());
//lvi.iImage = i;
lvi.stateMask = LVIS_STATEIMAGEMASK and LVIS_SELECTED;
lvi.state = INDEXTOSTATEIMAGEMASK(1);
listBar.m_wndList.InsertItem(&lvi);
CString str1;
str1.Format("%d时负荷",k);
m_rs.GetFieldValue(str1, varValue);
zdg 2000-05-22
  • 打赏
  • 举报
回复
CString tempStr
m_rec->GetFieldValue("RoomID", tempStr, DEFAULT_FIELD_TYPE);
int m_roomid = tempStr.m_iVal;

其中RoomID是数据库中的一个字段.
lapple 2000-05-22
  • 打赏
  • 举报
回复
没那么麻烦
CString str;
MySet.GetFieldValue(1,str);
就取出数据库中第二列中的内容
bigjim 2000-05-22
  • 打赏
  • 举报
回复
其实,GetFieldValue()的用法很简单,关键是它得到的是一个COleVariant,如果把它转化为其他类型,比如CString就好了.superbat采用了一个switch来处理不同的类型,但有现成的更好的东西.在MSDN的Samples\Mfc\Database\中有一个这样的例子DaoTable你拿来看看,它的一个类CCrack专门把COleVariant转化为CString.

COleVariant var;
....
MySet.GetFieldValue("Name",var);
CString name = CCrack::strVariant(var);
...
就这么简单.如果没有MSDN发信给我,我可以给你一个CCrack.
bigjim999@yeah.net

4,011

社区成员

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

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