- 締切済み
読み込んだCSVファイルの再検索
VBを用いてかなり大きいCSVファイルから、 ある条件に合うデータを検索するプログラムを作成しています。 日付などの条件をFORMに配置し、絞れるようにしております。 VB読み込み→検索にだいたい2分くらいかかるのですが、 条件を変更して再検索するときに、再度VB読み込みが必要になります。 一度メモリーに読み込んだ値から再検索かけられれば、 2回目以降の検索が早くなると思うのですが、 そのようなことは可能でしょうか。 要はこのようなことを実現したいです。 1.Button1.Click 2.CSVファイル読み込み 3.条件に合うものを検索(終了しない。配列の値を破棄しない) 4.再度Button1.Click 5.(CSVファイルの読み込みは飛ばして)条件に合うものを検索 WindowsXPでVB.NETを使用しております。 ご教授願います。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- MARU4812
- ベストアンサー率43% (196/452)
検索するなら、配列より、 コレクションを利用したような自作クラスを作成するか、 DataTable に入れるか したほうが便利かもしれません。
- 米沢 栄蔵(@YON56)
- ベストアンサー率36% (37/102)
CSVファイル読み込んだデータが、i行j列であるとして、 Dim AAA() Dim X,Y,i,j i=算定式 j=算定式 ReDim AAA(i,j) For X=1 To i For y=1 To j AAA(i,j)=Cells(i,j).Value Next Y Next X にて、読み込んだデータを配列AAA(i,j)として保管し、 配列AAA(i,j)を検索する方法をお考えになれば、 と思います。 また、再度のButton1.Clickをどういう方法で取得するかということは、 Button1.Clickの回数毎に加算される変数を用意し、 その回数に応じた、MsgBoxを用意しておき、 Clickする人にClickする意味を伝達するのは如何でしょうか。
- believe_me
- ベストアンサー率31% (172/544)
VB.NETは使ったことは無いのですが、普通に考えると・・・ 配列をグローバル変数で定義しておき、初回のみCSVファイルからその配列に読み込み検索する。 2回目以降は検索のみ行う。 初回かどうかの判定はスイッチをグローバル変数で定義する、又はその配列をチェックする。 ・・・ではどうでしょうか。
メモリが十分あって、CSVをすべてメモリに読み込んでおけるのであれば、可能も不可能も、 貴方が記載した通りにプログラムするだけだと思うのですが。。。 どこで詰まっているのでしょうか?
補足
Button1.Clickのボタンで、 読み込み・検索がスタートするようにしており、 検索が終わると結果をListBoxに出力させています。 その後、End Subでプログラムが終了するのですが、 End Subが行われると読み込んだデータがメモリから消えてしまいます。 でもButton1.Clickのサブプロシージャですので、 End Subは必須のようで、どのように回避すればいいのか悩んでおります。