お世話になります。
[Windows2000,Delphi5]
TDBGrid上でデータの編集を行い、UpdateSQLで更新を行っています。
(編集されたColumn1(数値)をColumn2に足しています。)
例えば、3レコード目と5レコード目を編集した場合に
1回目の"ApplyUpdates"で3・5レコード目を更新
3回目の"ApplyUpdates"で(もう一度)3レコード目を更新
5回目の"ApplyUpdates"で(もう一度)5レコード目を更新
となってしまいます。
1回目に'Query1UpdateRecord'を3回通っているようなのですが
(「1レコード目+編集された分=3回」?!)
なぜこうなるのか解からず行き詰まっています。。
procedure TForm1.Button1Click(Sender: TObject);
begin
with DM.Query1 do
begin
DisableControls;
try
First;
while not Eof do
begin
DM.Database1.StartTransaction;
Edit;
try
ApplyUpdates;
DM.Database1.Commit;
except
DM.Database1.Rollback;
raise;
end;
CommitUpdates;
Next;
end;
finally
EnableControls;
end;
end;
end;
procedure TDM.Query1UpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
begin
if UpdateKind = ukModify then
begin
if DM.Query1.UpdateStatus = usModified then
begin
UpdateSQL1.Apply(UpdateKind);
UpdateAction := uaApplied;
end;
end;
お分かりになる方がいらっしゃいましたら
どうぞよろしくお願い致します。m(_ _)m
TUpdateSQLを使わずにTQueryで処理するようにしたところ
うまく動作させられました。
お騒がせしました。
ツイート | ![]() |