Ms Access で数百万行を処理する必要がある状況があります。
データはSQLサーバーから取得され、通常は連続フォームで十分ですが、多くの列を持つテーブルがあるため、行が唯一の問題です。
だから私は ListView や MsFlexGrid のような代替手段を調べ始めました...何が問題かというと、何か遅延読み込みをしたいということです....最初の1000行が読み込まれ、次にユーザーがスクロールダウン/アップすると、次のデータセットが読み込まれます.
小さな .NET アプリケーションで DGV を使用してこの機能を数年間テストしましたが、Access + ActiveX コントロールで同様のものは見たことがありません。 。例えば。100,000行ですが、1000のセットしかロードしていません...これも無料のソリューションである必要があります..任意のアイデア....
そのような種類の拡張コントロールのドキュメントはかなり古く、デッドサイトに出くわすのではないかと心配しています.. .だから良い方向性は素晴らしいだろう.
最後になりましたが...編集は必要ありません..単に表示するだけです.
1 に答える
何千ものレコードをプルしたり、フォームをスクロールさせたりする理由はまったくありません。このようなプロセスは、ユーザーにとってまったくの苦痛です。
ユーザーがフォームで 100 万行を超えてスクロールすることを望む理由は何ですか? ここではソフトウェア開発者のスキルは必要ないと思うので、そのようなアプローチは本当に避ける必要があります。
解決策は、フォームに結果を入力する前に、単純に質問するか、いくつかの検索条件を取得することです。
このフォームは、100 万行のテーブルでうまく機能します。最初の名前を入力してから、おそらく姓の一部を入力します。次に、フォームに結果のみを入力します。
膨大な数の行を持つテーブルでも、瞬時に実行されます。
フォームは、次のアクセス例のようになります。
検索ボタンの背後にあるコードは次のようになります。
Dim strSQL As String
strSQL = "select * from tblcustomers where LastName like " & Me.LASTNAME & "*'" And _
"FirstName like " & Me.FIRSTNAME & "*'"
Me.RecordSource = strSQL
上記は、フォームがSQLサーバーへのリンクテーブルに基づいている場合でも、ほぼ瞬時にパフォーマンスを発揮します。
Access、.net、または Web ベースのアプリケーションでは、100 万行を試してプルしてページングするというアイデアを浮かび上がらせても意味がありません。ユーザーへの完全な苦痛を避けるために、何らかのフィルターまたは検索基準を追加するだけです。
クライアントとしての SQL サーバーへのアクセスは、条件に基づいてネットワーク パイプからのみレコードをプルします。テーブル全体がプルされるわけではありません。
また、上記の例は単純な Access 継続フォームであることも指摘しておく必要があります。activeX やグリッド コントロールは必要ありません。必要な機能セットは Access に組み込まれています。