みなさんにはいつもお世話になっています。さて現在SQL文を勉強しているのですがupdate文を使った際、何件更新されたか知る方法はないでしょうか?御教授お願いします。
procedure TFkinninsyou.Button1Click(Sender: TObject);
var
s :Strring;
begin
s :='update DATA set FIELD1 =100 where MAINKEY =1';
ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(lsql); ADOQuery1.ExecSQL;
end;
↑この処理の更新された件数を知りたいのです。
MrChinさん、こんにちは。
バージョン、DBサーバ不明ですが。
[D7Helpより]
> ExecSQL は,実行した SQL 文の影響を受ける行数を反映した整数値を返します。
...なので、下記で件数が返って来ると思います。
nCount := ADOQuery1.ExecSQL;
DBサーバによっては返さないのもあるかもしれません。その場合は問い合わせで、投げるSQLのwhere文を同じにして件数を取得するしかないと思われます。
select count(*) from DATA where MAINKEY =1
TADOQueryでは、ExecSQLのあとに RowsAffected Propertyで更新件数が確認できるようです。
あだちさん、ご丁寧に有難う御座います。2通りのパターンとも出来ました。
以前はselect count(*) from DATA where MAINKEY =1等で件数を確認し、0件の場合はinsert文を使っていました。プログラム文が長くなるしselect文をかける為処理速度が遅くなります。これで解決出来ました。どうもです!
解決チェック忘れていました(笑)
ツイート | ![]() |