- ベストアンサー
どのような構成にすればよいか?
初めて投稿します。 リュウちゃんです。 とあるツール作りで困ってしまってます。 データの検索ツールを作成することになってます。 内容は、インターフェイスがあり、そこに打ち込んだキーをもとにして、内蔵しているデータベースから値を引っ張ってきて表示するというものです。 このパッケージ(ツールとデータ)をお客さんに配るというものなのですが、当初、エクセルベースのデータにしてVBAでインターフェイスとロジックを作成しようとしたのですが、データ量がエクセルで1G以上であり断念しました。そこでAccessベースにしようとしても、お客さんがAccessをインストールしていない方が多くこれも断念してます。 そこで、VBでインターフェイスとロジックを組み、データについては何か違う方法で持たせたいと思ってます。 ちなみに、このデータは外部から見られないようにしたいと思ってます。(テキストベースだと丸見えなので) 根本的に考え方が間違っているかもしれませんが、良い知恵がありましたらご教授下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> そこでAccessベースにしようとしても、お客さんがAccessをインストールしていない方が多くこれも断念してます。 Accessをインストールしていなくても、mdbファイルにはVBやVBAから接続は出来ます。 私は、当初の予定どうりEXCELからアクセスデータベース(mdb) に接続するのが一番手軽かと思います。
その他の回答 (2)
- kero_mio
- ベストアンサー率90% (94/104)
補足ありがとうございます。 お客様に極力インストールさせたくなければ、 Webアプリケーションが一番手っ取り早いんでしょうけど、 CDに納品物件を入れたいとなると、Webアプリケーションでは 無理ですね。 VB < C言語 の関係は、否定はしないですが、 大量データになるとあまり変わらない気がしてます。 (VB Runtimeのインストールを強要したくない気持ちは確かにわかります) できるかどうか、わかりませんが、CSVファイルを1つに集中管理 させるのではなく、CSVを分割したような持たせ方ができる 設計ができれば、スピードの問題はある程度は解消できると 思いますし、VBの画面から、外部のEXEキックするのもAPIや Shell関数で十分できますので、検討する余地はあるかもしれませんね。 分割の単位は、件数でもいいですし、サイズで区切ってもいいかな と思います。ファイルのI/Oではなく、ある程度メモリ容量が許す 範囲で、メモリ少量ずつ展開して、編集していく処理をC言語側で 作るのが望ましいでしょうね。 ところで、C言語ってVC++ですか? VC++にもランタイムじゃないですが、納品時専用のDLLが必要になりますので、 CD-ROMに納品物を収める場合は、忘れないようにして下さい。
お礼
大変参考になりました。 皆さんの意見を踏まえて、もう一度調べなおして仕様を固めたいと思います。 有難うございました。
- kero_mio
- ベストアンサー率90% (94/104)
お客様には、極力ソフトウェアのインストールや 何かの設定(ODBC等)を強要したくない といったところでしょうか?(その辺、詳細を教えて下さい) このような場合、フリーのデータベースソフトを入手して、 どこかのサーバにデータベースをインストールし、 データベースサーバとして、データ保持すれば、 大量データも扱いが楽だと思います。 (VBの画面(お客様のPC)から、データベースサーバにSQLを投げて、データを取得すれば良いのですから) データベースと言っても、いろいろありますが、 MSDE、SQL Server などでも問題ないと思います。 (MSDE、SQL Serverのドライバは、大抵、どの端末にも インストールされているはずなので) 大量データも保持でき、お客様に、インストールを強要したり 何かを設定して頂く必要がなくなるという点では、 検討の余地はあるかと思います。 # ただし、その他にもいろいろな制約があると、 ちょっと厳しいですよね。 参考になれば、幸いです。
補足
ご返答、大変有難う御座います。 ご指摘の通り、お客様には極力ソフトウェアのインストールや複雑な設定を強要したくないのです。 前回、データ量が1GBを超えるとありましたが、テキスト形式であれば300MB程度でした。 納品形態は、CD1枚にデータ郡とexeを納めた形としたいです。 exeを実行すると、インターフェイスが現れて、検索条件を指定し、その条件をもとにデータから値を引っ張ってきて、CSV形式のテキストデータとして、PCに保存するといったような内容です。 前述にもあるとおり、その途中で何かをインストールしたり、設定したりはしたくありません。VBでexeを作っても「VBのランタイムをインストールしてください」のようなお客さんに手間が掛かることはなるべくしたくないのです。 データベースを利用するのではなく、下記のようなテキスト形式のデータの持たせ方にして、VBでインターフェイスを作り、C言語で作ったexeをキックするような作りが良いかななどと思ってます。処理スピード重視のためにCなるものができてきましたが・・・。 name,value,flg1,flg2,flg3,flg4,flg5,flg6,flg7.... ______________________________________________________ ○○○,9999999,1,0,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1 △△△,8888888,0,1,1,1,1,1,0,0,1,1,0,0,1,0,0,0,1,1,1 □□□,7777777,1,1,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0 ※何万レコードになると思われます。 たとえば、flg1とflg3とflg7が "1" のnameとvalueを抜き出し、CSVファイルとして出力する。(flgの選択が可変)となるような検索をします。
お礼
ご返答ありがとうございます。 >Accessをインストールしていなくても、mdbファイルにはVBやVBAから接続は出来ます。 そうゆうモノなんですね。その辺もググって調べてみます。
補足
質問者です。 再度、色々と調べたのですが、ご指摘の内容は、下記のURLのような方法でVBAからMDBを読むことをさしているのでしょうか? http://www.ylw.mmtr.or.jp/~itcarrot/vbscriptsql/ado_excel_09.html プログラミングをするときに、参照設定でActivXなどを設定する必要があるようですが、それは完成した後でも、それを配った客先には、それぞれが参照設定の手間をかける必要があるということになりますね。 これをVBで行うと、客先での細かい設定がしなくてもなくなるのでしょうか?