读数据库时的错误,帮忙看一下

Akagg 2003-08-20 11:03:51
debug 后的提示:
Error: GetFieldValue operation failed on field %d.
Data already fetched for this field.
First-chance exception in Manager.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.
Warning: Uncaught exception in WindowProc (returning 1).
是程序中的类型和数据库中设置的类型不同吗?
因为数据列多,也不知道到底是那个
...全文
67 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Akagg 2003-08-21
  • 打赏
  • 举报
回复
这是我的整个更新函数:
void CHouseDlg::ReFreshData()
{
if(!m_database.IsOpen())
{m_database.Open(_T("Manager"));}
m_house.DeleteAllItems ();
CHouseSet m_basicset(&m_database);
m_find.Format("select * from House");
m_basicset.Open(AFX_DB_USE_DEFAULT_TYPE,m_find);
CDBVariant value;
if(m_basicset.GetRecordCount()!=0)
m_basicset.MoveFirst();
char buf[30];
int i=0;

while(!m_basicset.IsEOF())
{ int temp=0;
//整型数显示
m_basicset.GetFieldValue (temp,value);
sprintf(buf,"%d",value.m_iVal );
m_house.InsertItem(i,buf);
//字符显示
m_basicset.GetFieldValue (1,value);
m_house.SetItemText(i,1,value.m_pstring->GetBuffer(1));

m_basicset.GetFieldValue (2,value);
m_house.SetItemText(i,2,value.m_pstring->GetBuffer(1) );

m_basicset.GetFieldValue (3,value);
m_house.SetItemText (i,3,value.m_pstring ->GetBuffer (1));

m_basicset.MoveNext();
i++;
}
}
编译无错,运行时弹出一个没有任何提示的错误提示筐,就这么几行啊,实在看不出有什么不对的
awant2k 2003-08-20
  • 打赏
  • 举报
回复
我也碰到类似问题,后来发现GetFieldValue()的列顺序要和CRecordset中打开的SQL列顺序一致且不能少就解决了,如 oRS.Open("xxxxxx f1,f2,f3,f4 yyyyyyyyyyy")后就 GetFieldValue(f1,v2);GetFieldValue(f2,v2);GetFieldValue(f3,v3);GetFieldValue(f4,v4); [v1-v4为CString型变量]

4,011

社区成员

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

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