3

数百万のレコードを含む大規模なデータセットでは、DBGrid で速度を維持するために特別なプログラミングが必要です。

これを自動的に行う Delphi (DBGrid) 用の既製のコンポーネントがあるかどうかを知りたいですか?

編集例: 一部のデータベースには、最初の X レコード (例: 100 レコード) をフェッチする機能があります。スクロールで一番下に到達したら、次の 100 を自動取得したい。逆に最初に到達したときは、前の 100 を取得したい。 DBGrid がバッファリングを行う DBGrid コントロール。それはかなりのプログラミングを節約します - いわば「バッファサイズ」を設定するだけです。

4

5 に答える 5

4

すばらしい (無料、オープン ソース、MPL 1.1 および GPL としてデュアル ライセンスを取得しているため、クローズド ソース アプリで使用できる) Virtual TreeViewとそのユーザー提供の子孫 (ページを下にスクロールして見つけてください) を確認してください。

質問の編集を反映するように編集します。Virtual TreeView を使用すると、数百万のノードをメモリに保持せずに処理できるだけでなく、実際にはそれが好ましい使用方法です。必要なときにイベント コールバックを介してデータを提供し、そのデータをキャッシュする (またはキャッシュしない) ようにツリーに指示できます。

もちろん、テーブルとして機能できるグリッド/レポート モードもあります (GridExtensions プロパティを True に設定するだけです)。

于 2008-10-14T15:21:54.767 に答える
3

NextGridは、Delphi用の軽量で高速で見栄えの良いグリッドです。

http://www.bergsoft.net/component/next-grid/features.htm

速度を落とさずに大量の細胞を処理する

NextGridは、速度を落とすことなく非常に大量のセルを処理できます。データの追加、変更、削除の速度は、セルの量に依存しません。NextGridのデモでは、NextGridが100,000行10列=1,000,000セルでどれだけ高速に動作するかを確認できます。

于 2008-10-14T12:14:07.923 に答える
3

Developer Express QuantumGrid Suiteを見てみましょう。(@birger:あなたはほんの少し速くなりました;-))したがって、私は答えを複製するだけではなく、いくつかの詳細を説明します:

DevExpress グリッドは、いくつかのモードを持つデータ コントローラーを使用して、グリッドにバインドされたデータを制御します。これらの 1 つはまさにあなたが探しているものです。

グリッドモード

グリッド モードを使用する場合、一定数のデータセット レコードのみがメモリに読み込まれます。データセットから取得されるレコードのセットは限られているため、自動ソート、フィルタリング、および集計計算はグリッド モードでは無効になっています (代わりに手動で制御する必要があります)。デフォルトでは、このモードは無効になっており、ExpressDataController はデータセット内のすべてのレコードをロードします。

これには明らかな欠点がいくつかあります。すべてのレコードが手元にない場合、集計、並べ替え、またはフィルター処理を行うことができません。

于 2008-10-14T14:24:34.943 に答える
2

DevExpress Quantumgridはこれを非常にうまくサポートしていると思います。

于 2008-10-14T14:16:49.733 に答える
1

申し訳ありませんが、Neftalíへのコメントを見ました

一度に100レコードを取得し、次の100レコードをフェッチする場合、この作業はデータベースアクセスコンポーネントに関連し、devartコンポーネントを調べます。これらは、最も使用されるデータベースへの直接アクセスコンポーネントを提供し、あなたが求めている機能を備えています。もっと:

http://www.devart.com/products-vcl.html

于 2008-10-14T12:24:58.290 に答える