最近またC++ Builderを使っているわけだが、そこでDBにクエリを投げて結果を取得した後に
num = DataModule1->Query1->RecordCount;
のような形でレコードの件数を取得しようとしたらなぜか-1がはいっているという現象にぶち当たった。これが結構厄介だったんだけど、ふとヘルプを見ていたら
TDataSet での RecordCount は常に -1 です。
という表記を発見した。ただ今使っているのはTQuery型のものだし、今までは上のやり方でちゃんとRecordCountを取得できていた。意味がわからなかったが、さらにヘルプを読んでいるとTIBSQL::RecordCountでの記述に
RecordCount プロパティを使うと,問い合わせで返されるレコード数を調べることができます。結果セットで 100 行を返す場合には,すべてのレコードがアクセスされたときにだけ,RecordCount は 100 になります。つまり,最初のレコードにアクセスした後では RecordCount は 1,といった具合になります。
とあったので、ためしに
DataModule1->Query1->Last(); DataModule1->Query1->RecordCount;
としてみたら正しい件数を取得できた。うむー、意味がわからんぞ。