大きなデータセットを高速に処理できるDBGridコンポーネントはありますか?
-
03-07-2019 - |
質問
大規模なデータセット、数百万のレコードには、DBGridの速度を維持するための特別なプログラミングが必要です。
これを自動的に行うDelphi用の既製のコンポーネント(DBGrid)があるかどうか知りたいですか?
EDIT例:一部のデータベースには、1番目のXレコード(100レコードなど)を取得する機能があります。スクロールして最下部に到達したら、次の100を自動取得します。逆に、最初に到達したら、前の100を取得します。これをプログラムできることはわかっていますが、その機能をDBGridがバッファリングを行うDBGridコントロール。それはかなりのプログラミングを節約します-あなたは単に「バッファサイズ」を設定する必要があります;いわば。
解決
Developer Express QuantumGrid Suite をご覧ください。 (@birger:あなたはちょうどティックが速かった;-))だから私は答えを複製するだけでなく、いくつかの詳細を述べています:
DevExpressグリッドは、グリッドにバインドされたデータを制御するためのいくつかのモードを持つデータコントローラーを使用します。これらの1つはまさにあなたが探しているものです:
グリッドモード
グリッドモードを使用する場合、固定モードのみ データセットレコードの数がロードされます メモリに。限られているため レコードのセットはから取得されます データセット、自動ソート、フィルタリング 集計計算は無効です グリッドモード(制御する必要があります 代わりに手動で)。デフォルトでは、これ モードが無効になり、 ExpressDataControllerはすべてをロードします データセットのレコード。
いくつかの欠点がありますが、それはかなり明白です。すべてのレコードが手元にない場合、要約、ソート、またはフィルターを作成できません。
他のヒント
すばらしい(無料のオープンソース、MPL 1.1およびGPLとしてデュアルライセンスされているため、クローズドソースアプリで使用可能)仮想ツリービューとそのユーザー指定の子孫(ページをスクロールしてそれらを見つけます。)
質問の編集を反映する編集:Virtual TreeViewでは、数百万のノードをメモリに保持せずに処理できるだけでなく、実際にはそれを使用するのが望ましい方法です。必要なときにイベントコールバックを介してデータを提供し、そのデータをキャッシュする(またはしない)ようにツリーに指示できます。
ああ、もちろん、テーブルとして機能するグリッド/レポートモードもあります(GridExtensionsプロパティをTrueに設定するだけです)。
NextGridは、Delphi用の軽量で高速で見栄えの良いグリッドです
http://www.bergsoft.net/component/next-grid /features.htm
大量のセルを速度を失うことなく処理する
NextGridは非常に大量を処理できます 速度を失うことなく細胞の。速度 データの追加、変更、削除 細胞の量に依存しません。 NextGridデモでは、どのくらいの速さを確認できます NextGridは100,000行と10行で動作します 列= 1,000,000セル
DevExpress Quantumgrid はこれを非常に優れた方法でサポートしています。
申し訳ありませんが、Neftalへのコメントを見ましたí
一度に100レコードを取得し、次の100件を取得する場合、この作業はデータベースアクセスコンポーネントに関連し、 devart コンポーネントを見ると、最も使用されているデータベースへの直接アクセスコンポーネントを提供します、あなたが尋ねている機能などがあります: