04.ODBCを省略してデータベースにアクセスする |
前回までの講座でODBC接続によるデータベース操作を紹介しました。この方法ではMS-Accessのデータベースファイルに限らず、SQL
ServerやOracleといった外部DBでも基本的には同じプログラムで対応することができて大変便利です(ただし、SQL文の細かい仕様の違いにより、そのままでは動かないケースもあります)
ただ、ODBCを仕様する方法だと、プログラムをインストールするパソコンごとにODBCの設定を行わなければいけないという運用面での煩雑さがあります。
もし、ODBCの設定を忘れたままプログラムを実行したら、
とエラーメッセージが表示されて、それ以降の操作ができなくなってしまいます。
そこで、今回はADODCコントロールで接続文字列にファイルDSNを使うことにより、静的なODBC設定を行わずにDB接続する方法を紹介します。
今回は、前回のプロジェクトの簡単な手直しで済みますが、必要な方はサンプルプロジェクト4をダウンロードしてください。
では、まずADODCのプロパティを変更します。ちなみにODBC接続が設定されていない状態だと、デザインするためにフォームを開いただけでも上記ODBCのエラーが表示されます。
が、ここは気にせずadoCategolyのプロパティページを開きます。
「接続文字列を使用する」の下の、「DSN=DbPhotos」という文字列を削除して空っぽにします。
レコードソースもadoCmdUnknownに変更しておきます。
OKでプロパティを保存して、次にFormのLoadイベントを以下のように修正します。
Private Sub Form_Load() dbfile = App.Path & "\DbPhotos.mdb" adoCategoly.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbfile adoCategoly.RecordSource = "Categoly" adoCategoly.Refresh Set dgrCategoly.DataSource = Nothing With adoCategoly.Recordset .MoveFirst While Not (.EOF) lstCategoly.AddItem .Fields("CategolyID") & " " & .Fields("Categoly") .MoveNext Wend .MoveFirst End With Set dgrCategoly.DataSource = adoCategoly dgrCategoly.Columns(0).Visible = False dgrCategoly_RowColChange 0, 0 End Sub |
青字で書いた所が、今回追加したコードです。(HTMLの表示上、行頭に漢字スペースが入ってるのでコピーする場合は注意してください)
adoCategoly.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & dbfile
の部分が、Adodcの接続ソースに代わるもので、
adoCategoly.RecordSource = "Categoly"
がレコードソースプロパティです。
以上で、修正完了です。早速実行してみましょう。
ODBCの設定がなくても実行できるはずです。
ちなみに、今回はCategolyテーブルに適当なカテゴリを登録してみました。
PhotoレコードのCategoly列には「ポートレート」という文字列ではなく、「3」というコードで登録されます。
これはカテゴリのコンボボックスにコード+名称を文字列として表示させ、DBに登録する際にコードだけを取り出してセットしているからです。
次回はデジカメで撮った写真に埋め込まれるExifという情報を使って、撮影情報などをDBに登録する方法を紹介します。
デジカメ整理アプリの実用化に向けて更に一歩前進です。
<<目次に戻る