procedure TF_INPUT.btn_saveClick(Sender: TObject);
begin
with Qry_RKD0, Qry_RKD1, Qry_QTF do begin
CalcuHJJE;
Edit;
if state in[dsEdit, dsInsert] then
try
begin
Qry_RKD0.ApplyUpdates;
Qry_RKD1.ApplyUpdates;
end;
except begin
end;
end;
end;
end;我用的是bde query ,updatesql控件, 按下保存就执行以上代码的,插入数据时候按下按钮是没问题的,当我修改其中一些字段值,再保存就会再插入修改过的记录。这样操作不应该执行insertsql才对阿。或者是我的代码哪里有问题?cachedupdates已经为True了
begin
with Qry_RKD0, Qry_RKD1, Qry_QTF do begin
CalcuHJJE;
Edit;
if state in[dsEdit, dsInsert] then
try
begin
Qry_RKD0.ApplyUpdates;
Qry_RKD1.ApplyUpdates;
end;
except begin
end;
end;
end;
end;我用的是bde query ,updatesql控件, 按下保存就执行以上代码的,插入数据时候按下按钮是没问题的,当我修改其中一些字段值,再保存就会再插入修改过的记录。这样操作不应该执行insertsql才对阿。或者是我的代码哪里有问题?cachedupdates已经为True了
保存的时候applyupdates这样。有问题吗
这段代码是的 Qry_RKD0, Qry_RKD1, Qry_QTF都是query的话,用with 时,下面
edit,指向的是Qry_RKD0后面Qry_RKD1是没有办法执行的我的建意的 再定义一个Procedure procedure TF_INPUT.btn_saveClick(Sender: TObject);
prucedure SaveData(DataSet:TAdoQuery);
begin
with DataSet do begin
CalcuHJJE;
Edit;
if state in[dsEdit, dsInsert] then
try
begin
ApplyUpdates;
end;
except begin
end;
end;
end;
end;
begin
try//加入事务处理,就更好了,我就不多写了
SaveData(Qry_RKD0);
SaveData(Qry_RKD1);
SaveData(Qry_QTF);
except end;
end;
procedure TF_INPUT.SetRecordNo;
var i: integer;
begin
with Qry_RKD1 do begin
First;
for i := 1 to RecordCount do begin
Edit;
FieldByName('RecordNo').AsInteger := i;
next;
end;
end;
end;
当我执行完这个过程再保存的时候就会把修改的记录重复插入一次,而不是保存修改后的数据。没执行这过程就没问题。晕