現在、CD-RにあるMDBファイルをDAOで接続し、LISTVIEWに追加表示し、コンボボックスで検索、再表示するプログラムを作成しています。
元々、インストールせずに使用可能という前提での開発だったため、DBGRID、DBCOMBOを使用できないという状況です。
レコード数は2000、フィールド数は30程度しかありませんが、全レコードを表示(再描画)しようとすると2秒程度かかります。最終的には、レコード数は30000程度になると思われるため、この処理速度は少し問題になるかなと思っています。
そこで質問なのですが、
・LISTVIEWの追加、表示速度を上げる方法はありますか?
・他にインストールせずにする方法で、処理速度の早い方法ってありますか?
全レコードを配列にして、オンメモリでの検索にしてみようとも思ったのですが、SQLみたく絞込み検索をする方法がわからず、といった状況です。
よろしく、ご教授願います。
>インストールせずに
なにを?
少なくとも、
VB.NET製アプリなら、.NET FRAMEWORKを
VB6以前なら、いわゆる「VBランタイム」を
インストールしなければ動作しませんが?
それとも何かがプリインストールされているという前提の話でしょうか?
>LISTVIEWの追加、表示速度を上げる方法はありますか?
ListViewに限らず、書き換え中はVisibleをFalseにするのが常套手段です。
>処理速度の早い方法ってありますか?
律速段階を特定するほうが先では?
>オンメモリでの検索にしてみようとも思ったのですが、SQLみたく絞込み検索をする方法がわからず
オンメモリレコードセットでFilter使えばいいのでは?
いずれにしても、遅い原因がRecordsetなのかListViewなのか、
それとも他に原因があるのか、特定せずに作業しても、
無駄な努力になりかねないのでは?
すみません、説明不足でした。
開発環境:VB6
対象環境:Windows98以降
であり、Windowsの標準コントロールを使用する為、
ListViewを採用していました。
>書き換え中はVisibleをFalseにするのが常套手段です。
Visible=Falseにしていますが、遅いのです。
遅い原因はListViewの描画処理だと思われます。
(Recordset作成には処理時間がかかっていませんでしたので。)
>オンメモリレコードセットでFilter使えばいいのでは?
すみません、知りませんでしたので、調べてみます。
何か参考になるサイトがあれば、教えてください。
>対象環境:Windows98以降
Windows98にはVBランタイムはプリインストールされていませんから、
「インストールせずに使用可能という前提」が成り立たないのでは?
>遅い原因はListViewの描画処理だと思われます。
30000レコード×30フィールドだと、
数メガ〜数十メガバイトになるでしょうから、
まずデータのシェイプアップを考えたほうがいいのでは?
単にコントロールへの代入・表示速度だけ考慮すると、
ListViewよりRichTextBoxのほうが高速でしょう。
(単純な30000レコード×30フィールド×5文字の代入テストだと
自環境で前者22sec,後者4.5sec)
>何か参考になるサイトがあれば、教えてください。
ここの過去ログ
ツイート | ![]() |