一个让我感到惊讶的问题,绝对经典

Sorder 2004-12-28 10:13:09
我有一个ADOQuery1已经查询有了数据,
ADOQuery1.LockType:=ltBatchOptimistic;
ADOQuery1.SQL.Text:='select * from MyTable';
ADOQuery1.Open;
这个时候我在界面上的DBGrid数据区编辑了一条记录
ID Value
1 中国
2 美国
3 加拿大1 //--在编辑之前是’加拿大‘
4 新加坡
这个时候我处理以下过程
procedure TForm1.myproc;
var
q:TADOQuery;
begin
q:=TADOQuery.Create(self);
try
q.Recordset:=ADOQuery1.Recordset;
finally
q.Free;
end;
end;
处理了上一步骤后,我保存数据
ADOQuery1.UpdateBatch(arAll);
大家一定想象不出最后数据库中的结果
ID Value
1 加拿大1 //--这里怎么被替代了
2 美国
3 加拿大 //--我在这里编辑的
4 新加坡
当然如果我不执行过程myproc怎么编辑怎么保存,结果肯定是正确的
...全文
622 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinyy 2004-12-31
  • 打赏
  • 举报
回复
用Assign()试试如何?
muroachanf 2004-12-30
  • 打赏
  • 举报
回复
没有遇到过,mark一下
aZe_yn 2004-12-29
  • 打赏
  • 举报
回复
在执行q.Recordset:=ADOQuery1.Recordset;时q的记录指针位置被修改,自动指向第一条记录,你可以在赋值以后刷新看看,就像楼上说的用q.Recordset:=ADOQuery1.Recordset.Clone(1);赋值就行了
lzy6204 2004-12-29
  • 打赏
  • 举报
回复
出项问题不奇怪
ADO本身就是有很多BUG
Sorder 2004-12-29
  • 打赏
  • 举报
回复
to sjg0317(sjg0317) ( )
有唯一关键字
Blakhawk 2004-12-29
  • 打赏
  • 举报
回复
是不是Clone带出来的。
Sorder 2004-12-28
  • 打赏
  • 举报
回复
这个是一个简单的示例,因为我要把一个单元的记录集传递到另一个单元,但是另一个单元释放后,就出现了我说的问题,所以我要怎么做
tuweibalang 2004-12-28
  • 打赏
  • 举报
回复
为什么这么作哦
xiaoxiao197821 2004-12-28
  • 打赏
  • 举报
回复
代码不可能这样写
楚人无衣 2004-12-28
  • 打赏
  • 举报
回复
没这样做过……
老本 2004-12-28
  • 打赏
  • 举报
回复
??? really?
sixgj 2004-12-28
  • 打赏
  • 举报
回复
晕……
sjg0317 2004-12-28
  • 打赏
  • 举报
回复
数据表中没有唯一关键字
ygflydream 2004-12-28
  • 打赏
  • 举报
回复
up!
ss__328 2004-12-28
  • 打赏
  • 举报
回复
可能是在执行
q.Recordset:=ADOQuery1.Recordset;时 会自动执行First

ss__328 2004-12-28
  • 打赏
  • 举报
回复
如此处理

procedure TForm1.myproc;
var
q:TADOQuery;
begin
q:=TADOQuery.Create(self);
try
q.Recordset:=ADOQuery1.Recordset.Clone(1);
finally
q.Free;
end;
end;

@原野 2004-12-28
  • 打赏
  • 举报
回复
没有遇到过如此……
关注

2,497

社区成员

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

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