掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TADOQueryのCursorLocationについて (ID:44679)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
大量のデータ取得に関して 200万件程度・・・は想定にありません。 当方では有っても、一度に3万件程度です。 最もテストで60〜90万件程度は取得したことはありますが RecordCountは取得できています。 但し前投稿でも記したようにclUseClient,ctStaticです。 SQLServerは特に設定を変えていません。(Defaultのままです) 現在使用しているのは、SQLServer7.0,2000,2005,2008です。 TADODataSetもCursorLocation、CursorType、LockTypeを変えるくらいです。 もっとも、clUseClient,ctStaticは実コードでは保々使用していません。 レコード件数と言っても、テーブル自体の中身が違うと思われますので、 何とも言えませんが。 一般的に動的カーソルでは結果セットが定まらないので-1を返します。 ctKeySetに関して私の解釈に誤りが無ければ静的カーソルと動的カーソル の中間です。 なので・・・。 >逆に私の方から、Syakeへ、大量のレコードの読出しは・・・ 取り敢ずレコード数が欲しい場合はCount()を使用しています。 大量のレコードの読出し(参照)ならclUseServer,ctOpenForwardOnlyです。 但し、これでも200万件となると時間がかかりますね。 なのでTDBXReaderを使用するかもしれません。 >危険性があるなら参考程度になるコードを書くべきだと思います。 >はどういったことでしょうか? Select count(*) 文からSelect * 文の間で、レコードが変更さる恐れが ある場合を仮定しての話です。 もちろんこの場合、Select * を動的カーソルで参照する場合も当てはま ります。 レコード数が定まっていると仮定したコードを記述するべきでないと言う ことでした。 例えばレコードを順次参照するのに進捗バーのMaxにレコード数を設定し そのままFor文するとか・・・ こうしたい場合は PotisionにMax以上の数値が設定されない様にする。 レコードの末尾に達したか必ずチェックする。 などの小細工が必要などと老婆心です(^^;)。 最も、貴兄の場合ではレコードが変更される事は無いとのことなので、 この心配は不要でしょう。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.