初心者にはつらいVBのデータベースって・・・

最近また、VBやってます。
とにかく1年に一回くらいしか仕事しないので、
さっぱり覚えがないことだらけです。
VB6を使っていてかなり前に、
データベース(以下、DBと省略)を使いたくて
ADODCとDataGridを使ったことがあります。
とりあえず一覧表が出せて、編集や確認ができれば・・・
ということで作りました。
フィールド件数なんかも100有るかないかぐらいで
多くないし、スタンドアロンでPC1台こっきりで使うので
まあこれでよかったです。
ところが、その時に困ったのは
開発環境と運用環境が違うと、DBへアクセスできない・・・
DBはmdb形式のACCESSで作ったテーブルが3つほどの
単純なもの。
そこでまずフォームを作りました。
フォームにはDataGridコントロールとADODCが貼り付けてあります。
あとはDB用のボタン・・・
DataGridとADODCのフォーム
・・・で、いろいろ勉強しながらやったんですが、開発環境で
プロジェクトやフォーム、DBをまとめて一つのフォルダで管理しようと
一カ所にまとめていました。
でもそれで「F8」キーなんかでステップ毎に実行していくと
DBが見つからないというエラーが。
DBへの接続文字は、ADODCのプロパティにある ConnectionStringで
指定しますが、これを今の一括管理しようとしているフォルダ内の
DBに割り当てると動きません。
・・・なんで????
ちなみにその時は、DBファイル名をフルパス(C:\○○\▲▲\DB.mdbのように)
指定せず、DB.mdbというファイル名だけにしていました。
それでDBが見つからない・・・?
どうやら、アプリケーションパス(App.Path) は、
プロジェクトのあるフォルダを読んでくるみたいですが
実行ファイルはVB98フォルダ内のVB6.EXE・・・
この違いがうまくいかないようです。
ということは開発環境での問題みたいです。
そこで・・・
■対策1■
プロジェクト一括管理フォルダ内のDBを、
VBのインストールされたフォルダへコピーしておく。
これでエラーが出なくなりました。
よしよし・・・っと。
ん? これは?
ははぁ~???・・・
これって、管理フォルダの中のDBを読んでないことになるんでは?
いや全くそのとおりでした。失敗です。
そこで
■対策2■
ADODCのプロパティからConnectionStringを変えてみました。
ConnectionStringはADODCをDBに接続するための文字列です。
ADODCのプロパティ
ここに、
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”C:\○○\▲▲\DB.mdb”;Persist Security Info=False
という感じで入力します。
するとこんどはVB98フォルダ内にDBがなくても、ちゃんとアクセスできます。
じゃあ、これをバックアップのために別のフォルダ名で保存して・・・
よしよし・・・っと。
ん? これは?
ははぁ~???・・・
これって、フォルダ名を変えたら使えないんじゃないか?!
いや全くそのとおりでした。
DB.mdbを絶対パスで指定したので、コンパイルしてEXEを作ったとしても
これじゃあ動きません。
とほほです。
このときはここであきらめましたんですが、実は解決策がまだあったんです。
続きは別記事で。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事