TADOQuery コンポーネントを使用して SQL UPDATE ステートメントを実行しており、更新された行数を調べたいと考えています。UPDATE ステートメントは正常に実行され、それに応じて行が変更されますが、.RowsAffected プロパティは常に -1 を返します。ドキュメントには、-1 はステートメントのエラーを示すと記載されていますが、私が言うように、正常に実行されます。ステートメントの前に SET NOCOUNT OFF を付けてみましたが、違いはありませんでした。私のコードは次のとおりです。
var
adoUpdateQuery: TADOQuery;
blnUpdatedOK: Boolean;
begin
adoUpdateQuery := TADOQuery.Create(nil);
adoUpdateQuery.DisableControls;
adoUpdateQuery.Connection := adcMiddleTierDB;
adoUpdateQuery.ExecuteOptions := [eoExecuteNoRecords];
adoUpdateQuery.SQL.Text := 'UPDATE MyTable SET Status = 1 WHERE Status = 0';
try
adoUpdateQuery.ExecSQL;
blnUpdatedOK := (adoUpdateQuery.RowsAffected > 0);
MS SQL Server 2008R2 に接続している Delphi XE2 を使用しています。