一个让我感到惊讶的问题,绝对经典
我有一个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怎么编辑怎么保存,结果肯定是正确的