用CRecordset对象的edit,然后update出现"非法的游标位置,未定义的键集"异常,向各位前辈请教是什么原因?

lxs6714010 2014-08-27 02:41:45
// 打开数据库(既Excel文件)
if(!database.Open(NULL, FALSE, FALSE, sDsn/*,FALSE*/))
return false;

CSetdata recset(&database);

// 设置读取的查询语句.
sSql.Format("SELECT * FROM 表计信息 WHERE 表类型='%d' AND 表地址='%d' AND 厂商代码1='%d' AND 厂商代码2='%d'"
,MeterTypeID,meter_addr,FactoryCode1,FactoryCode2);

// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::none);

if (recset.IsEOF()&&recset.IsBOF())//记录集为空
{
// 关闭数据库
database.Close();
return false;
}
recset.Edit();
recset.m_Amaasflow = amassflow;
//bool i = recset.CanUpdate();
if( !recset.Update() )//这里出现异常
{
AfxMessageBox( "Record not updated; no field values were set." );
return false;
}
recset.Requery();
recset.Close();
// 关闭数据库
database.Close();
...全文
481 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpplab 2014-09-05
  • 打赏
  • 举报
回复
使用unicode時odbc將在update和delete出錯,如果可以的話暫時取消unicode,使用ansi。我正在尋求unicode、odbc的解決方案。沒想到mfc到現在還沒有解決。
lxs6714010 2014-08-27
  • 打赏
  • 举报
回复
有没有哪位仁兄知道怎么解决啊?
lxs6714010 2014-08-27
  • 打赏
  • 举报
回复
用了MoveFirst,又报异常说“记录集仅支持向前移动”,可能因为前面recset.open 的时候参数为CRecordset::forwardOnly的原因。
lxs6714010 2014-08-27
  • 打赏
  • 举报
回复
引用 1 楼 hdt 的回复:
try recset.MoveFirst
在Update前用recset.MoveFirst吗?
真相重于对错 2014-08-27
  • 打赏
  • 举报
回复
try recset.MoveFirst

4,011

社区成员

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

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