UpdateSQLでの更新について

解決


たま  2003-01-11 03:22:02  No: 2574

お世話になります。
[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


たま  2003-01-17 23:06:59  No: 2575

TUpdateSQLを使わずにTQueryで処理するようにしたところ
うまく動作させられました。
お騒がせしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加