2006
06.02

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

プログラム 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を作ったとしても
これじゃあ動きません。
とほほです。
このときはここであきらめましたんですが、実は解決策がまだあったんです。
続きは別記事で。

コメントは利用できません