m_pRecordset->Delete(adAffectCurrent)出错原因是什么呢

wal199005 2016-08-22 10:01:19
strsql = "select * from flow_info_tb order by flow_ID";		// 默认升序
// 查询flow_info_tb中的所有记录
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset->Open((_variant_t)strsql,
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}

try
{
if(m_pRecordset->BOF) // 无记录
{
m_pRecordset->Close();
m_pRecordset = NULL;
return;
}
else // 有记录
{
m_pRecordset->MoveFirst();

BYTE equip;
while(!m_pRecordset->adoEOF)
{
// flow_info_tb表中有几个字段 ,有一个是flow_ID,字符串类型n1-n2-n3格式
……; // 数据处理部分
equip = n1; // 处理得到n1
if(equip == 1) // 如果 n1等于1删除这条记录
{
m_pRecordset->Delete(adAffectCurrent); // 排序后的记录集中记录的删除,这句出错!
m_pRecordset->Update();
}
m_pRecordset->MoveNext();
}
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;


m_pRecordset->Delete(adAffectCurrent); 出错
1. 与程序连接数据库的用户的权限有关?权限里已允许插入、更改、更新、删除、选择。
2. 与Open函数中的adOpenDynamic,,adLockOptimistic参数有关?
3. 与查询语句中的order by有关?


...全文
1121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2016-09-02
  • 打赏
  • 举报
回复
删除之前,检查记录指针是否EOF或者BOF
smallcrocodile 2016-09-01
  • 打赏
  • 举报
回复
只执行一条试一试,不要循环
wal199005 2016-08-24
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
先在数据库中执行你的sql语句,看是否正确
正确 就是查询flow_info_tb表中的所有记录,并按flow_ID升序排列。 现在用了一个麻烦的方法解决了。 在原来删除单条记录的位置执行像上面的Open函数删除的。
oyljerry 2016-08-23
  • 打赏
  • 举报
回复
先在数据库中执行你的sql语句,看是否正确

4,011

社区成员

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

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