IBQueryでのRecordcountについて

解決


サンプー  2006-06-27 02:50:57  No: 22301

度々、すみません。
DL6Pro,XPにてデータベースを作成しています。以前使用していたデータベースparadoxをインターベースへ拡張しようとしています。プログラムのなかで行数を取得するのにparadoxの時には、RecordCountを使ってうまく動作していたのですが、IBにすると行数を取得できないようです。
取得したい画面にDBGridを貼り付け、DatasourceとDataSet、DataBaseを関連付け、スクロールバーで移動させた後、取得するとうまくいくようです。本来、DBGridは必要ない画面ですのが・・・!?
IBQueryでRecordCount関数を利用するには、何か特別の注意かコーディング上の注意が必要なのでしょうか?
どなたかご教示下さい。


igy  2006-06-27 03:11:59  No: 22302

ヘルプ
TIBSQLのRecordCount プロパティ
では、

RecordCount プロパティを使うと,問い合わせで返されるレコード数を調べることができます。
結果セットで 100 行を返す場合には,すべてのレコードがアクセスされたときにだけ,
RecordCount は 100 になります。
つまり,最初のレコードにアクセスした後では RecordCount は 1,といった具合になります。

とあります。


Ru  2006-06-27 04:13:59  No: 22303

InterBase使える環境ではないのですが

例えば

IBQuery  →  TDataSetProvider  →  TClientDataSet

でつなげたり出来ますか?

出来るならばこれでClientDataSet.RecordCountでレコード件数は拾えるはずです。


サンプー  2006-06-27 09:39:51  No: 22304

Ruさん、IGYさんたびたびありがとうございます。igyさん御指摘のヘルプは一応目を通してはいたのですが、はっきりとは理解できていませんでした。Ruさんの方法でIBQueryにはつなぐことが出来ました。
また、Client.RecordCountでレコード件数は拾うことが出来ようです。
ただし、結果としては、初期に設定したIBQueryで取得した行数でした。IBQueryのSQLを途中で変更して、select文をを発行した後のRecordCountを取得したいのですが、IBQuery  →  TDataSetProvider  →  TClientDataSetの関係をSQL発行後、切断、再接続する必要があるのでしょうか?また、どのようにすれば、良いのでしょうか?あつかましい質問ですがよろしくご教示下さい。


HOta  2006-06-27 16:10:06  No: 22305

一般的なRDBMSでRecordCountは保証されていません。Count文を発行して取得しましょう。


サンプー  2006-06-28 04:25:02  No: 22306

HOTAさん、有難うございました。
Count文を発行して取得することができました。
期待通りの結果が得られました。
まだまだの知識のようなので、今後ともよろしくお願いいたします。


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

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






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