用BCB6+ADO做数据库,怎么每次新增记录后马上修改就出错,大家进来看看

dhfly 2004-11-12 06:20:06
用BCB6+ADO做数据库,怎么每次新增记录后马上修改就出错
出错如下:
异常:EOleException with message:
无法为更新定位行。一些值可能已在最后一次读取后已更改。

我添加后关闭数据库,重新打开就可以修改了。

这是什么原因呢,帮帮我呀!
...全文
463 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
真如实观 2004-12-10
  • 打赏
  • 举报
回复
这种问题怎么能给我碰伤呢?
clming327 2004-12-06
  • 打赏
  • 举报
回复
TO:
dhfly (飞鸿)
xuby5228(潇湘大少)
niathack()
techlink()
wz01()
________________________________
哈哈哈哈........
我也一樣用這個笨辦法
也上過這裡問過
不知是不是我沒寫清楚
沒人正確解答

現在我用DBEdit綁在數數源上
用DBEdit來輪入修改就OK了
那段時間可苦了我
55555555555
xuby5228 2004-12-02
  • 打赏
  • 举报
回复
->Post();之后,
->Close();
->Open();
再进行修改,之后保存。
niathack 2004-11-26
  • 打赏
  • 举报
回复
要先close()
tzcjs 2004-11-26
  • 打赏
  • 举报
回复
用SQL语句就没事
njzzh 2004-11-26
  • 打赏
  • 举报
回复
无法定外行通常是没有主键造成的,可通过增设一个自动增量字段解决,这样该行就可唯一定位了。
wt_sanlian 2004-11-24
  • 打赏
  • 举报
回复
当查询结果集被打开之后,有没有其它组件对相应记录做了修改操作

techlink 2004-11-23
  • 打赏
  • 举报
回复
这问题我也碰到过,在post()后调用adodataset->close()再open()即可,虽然很烦,但问题解决了
caiquiet 2004-11-23
  • 打赏
  • 举报
回复
加一条数据就POST一次,这样不会有错,如果你是修改的你可判断有没有改变,改变了才能做POST。如果没改变做POST也会出错的。
yhec 2004-11-23
  • 打赏
  • 举报
回复
ADO要有一个自增ID字段做主键
zuojianyou 2004-11-22
  • 打赏
  • 举报
回复
ado的补丁有没有安装???
futulove 2004-11-22
  • 打赏
  • 举报
回复
数据集没有刷新吧,
从新SELECT一下吧
wz01 2004-11-22
  • 打赏
  • 举报
回复
我用的也是先关闭,再打开。
wz01 2004-11-22
  • 打赏
  • 举报
回复

void __fastcall TForm1::ADOTable1AfterPost(TDataSet *DataSet)
{
DataSet->Refresh();
}

这样也会出错的,我试过。 我也不知道为什么?
dhfly 2004-11-22
  • 打赏
  • 举报
回复
bcb6也要装ado补丁吗
COKING 2004-11-15
  • 打赏
  • 举报
回复
void __fastcall TForm1::ADOTable1AfterPost(TDataSet *DataSet)
{
DataSet->Refresh();
}
Persistent8813 2004-11-14
  • 打赏
  • 举报
回复
值得关注,特别是用缓冲方式时
hhf2688 2004-11-14
  • 打赏
  • 举报
回复
应该是默认值的问题
要不就是没给表设主键
milkslzz 2004-11-14
  • 打赏
  • 举报
回复
我给一段例题给你看就明白了。,其中语句要分开,要不然会出错

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString s;

ADOQuery1->SQL->Add("update 员工 ");
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString s;
ADOQuery1->SQL->Add("update 项目开发"); ///更新项目开发那个表
s="set 员工编号='" +Edit14->Text+ "'"; ///set里面的值
s+="where 员工编号='" +Edit13->Text+ "';"; //条件
ADOQuery1->SQL->Add(s);
ADOQuery1->ExecSQL();
}
ShowMessage("信息已经修改");
h98458 2004-11-13
  • 打赏
  • 举报
回复
建议你用SQL语句啊,update语句
加载更多回复(5)

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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