YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

RecordCountについて

最近また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;

としてみたら正しい件数を取得できた。うむー、意味がわからんぞ。