検索&描画処理について


  2005-03-06 09:05:03  No: 88701

現在、CD-RにあるMDBファイルをDAOで接続し、LISTVIEWに追加表示し、コンボボックスで検索、再表示するプログラムを作成しています。
元々、インストールせずに使用可能という前提での開発だったため、DBGRID、DBCOMBOを使用できないという状況です。
レコード数は2000、フィールド数は30程度しかありませんが、全レコードを表示(再描画)しようとすると2秒程度かかります。最終的には、レコード数は30000程度になると思われるため、この処理速度は少し問題になるかなと思っています。
そこで質問なのですが、
・LISTVIEWの追加、表示速度を上げる方法はありますか?
・他にインストールせずにする方法で、処理速度の早い方法ってありますか?
全レコードを配列にして、オンメモリでの検索にしてみようとも思ったのですが、SQLみたく絞込み検索をする方法がわからず、といった状況です。
よろしく、ご教授願います。


Say  2005-03-06 09:54:37  No: 88702

>インストールせずに
なにを?
少なくとも、
VB.NET製アプリなら、.NET FRAMEWORKを
VB6以前なら、いわゆる「VBランタイム」を
インストールしなければ動作しませんが?

それとも何かがプリインストールされているという前提の話でしょうか?

>LISTVIEWの追加、表示速度を上げる方法はありますか?
ListViewに限らず、書き換え中はVisibleをFalseにするのが常套手段です。

>処理速度の早い方法ってありますか?
律速段階を特定するほうが先では?

>オンメモリでの検索にしてみようとも思ったのですが、SQLみたく絞込み検索をする方法がわからず
オンメモリレコードセットでFilter使えばいいのでは?

いずれにしても、遅い原因がRecordsetなのかListViewなのか、
それとも他に原因があるのか、特定せずに作業しても、
無駄な努力になりかねないのでは?


  2005-03-06 10:56:06  No: 88703

すみません、説明不足でした。

開発環境:VB6
対象環境:Windows98以降
であり、Windowsの標準コントロールを使用する為、
ListViewを採用していました。

>書き換え中はVisibleをFalseにするのが常套手段です。
Visible=Falseにしていますが、遅いのです。
遅い原因はListViewの描画処理だと思われます。
(Recordset作成には処理時間がかかっていませんでしたので。)

>オンメモリレコードセットでFilter使えばいいのでは?
すみません、知りませんでしたので、調べてみます。
何か参考になるサイトがあれば、教えてください。


Say  2005-03-06 13:10:14  No: 88704

>対象環境:Windows98以降
Windows98にはVBランタイムはプリインストールされていませんから、
「インストールせずに使用可能という前提」が成り立たないのでは?

>遅い原因はListViewの描画処理だと思われます。
30000レコード×30フィールドだと、
数メガ〜数十メガバイトになるでしょうから、
まずデータのシェイプアップを考えたほうがいいのでは?
単にコントロールへの代入・表示速度だけ考慮すると、
ListViewよりRichTextBoxのほうが高速でしょう。
(単純な30000レコード×30フィールド×5文字の代入テストだと
自環境で前者22sec,後者4.5sec)

>何か参考になるサイトがあれば、教えてください。
ここの過去ログ


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

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






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