UDL
UDLメモの目次
UDLとは?
UDLはデータリンクファイルの拡張子です。データリンクファイルはADO2.0で導入され、2.5で拡張されました。MSDNでUDLを検索すれば詳しい情報を入手できます。
データベースのプロバイダ接続文字列をダイアログで設定できるようにする汎用的なインターフェースといったところでしょうか。
百聞は一見にしかず。.udl という拡張子で空のファイルを生成してダブルクリックしてみましょう。何をするものかなんとなく解るでしょ?
実際に私は仕事でUDL接続を多様しているので、紹介程度に書いておきます。
UDLでMDBに接続
Jetエンジンを使うだけですので、Accessを持っていなくてもOKです。MDACは最新版をインストールしておくことをお奨めします。
MDBに接続するための設定
- プロバイダタブで Microsoft Jet4.0 OLEDB Provider を選択します。
- 次に接続タブで、接続したい mdbファイル を指定します。
- 接続のテストボタンを押します。接続のテストに成功しました。というダイアログが出れば接続成功です。OKボタンを押してで設定を保存しましょう。
設定したUDLを使って・・・
下記はVBSでの接続例です。
Dim objCon Set objCon = CreateObject("ADODB.Connection") objCon.Open "File Name=sample.udl"
通常Openで接続文字列を書くところに "File Name=*.udl" としてUDLを設定してあげるだけです。簡単でしかもたくさんのメリットがあります。
- 面倒な接続文字列をGUIで生成できる。
- お陰で接続文字列が短くコードがすっきりする。ODBCのDSN指定の次に短いね(^^)
- DB接続設定をプログラムから切り離せる。
これは、開発環境と実稼動環境など異なるディスク構成での設定がとても楽になります:-)
UDLでXLSに接続
これも Jetエンジンを使うだけですので、Excelを持っていなくてもOKです。
- 上記 mdb への接続と同様にして、mdbの代わりにxlsファイルを指定します。
- 「すべて」タブでExtended Properties の値に Excel 8.0 と入力します。
- 接続のテストボタンを押してテストします。
こうして接続したExcelファイルには、JETのSQL命令でアクセスすることができます。ExcelファイルをDBとして使うなんて・・・なんかいいですよね。俺的には大好きです。
あれ?スキーマは?
Excelデータってことは・・・スキーマはどうなってんの??そうです。Excelには、フィールドの型とか指定できないのです。さらにテーブル=シートなの?とか色々な疑問が浮かびます。他にも制限とかいっぱいありますので、
[HOWTO] VB または VBA から ADO を Excel データで使用する
とか参考にしてくださいませ。
UDLでテキストファイルに接続する
CSVなどのテキストデータベースに接続する方法です。
テキストデータベースは、
- ディレクトリをデータベースとみなす
- テキストファイルをテーブルとみなす
と扱われます。
ですので、DBへの接続だけなら、ディレクトリのみでテキストファイルは存在しなくてもよいです。以下の接続の確認は空のディレクトリでもOKです。
- mdbへの接続と同様にして、mdbの代わりにディレクトリを指定します。
- 「すべて」タブでExtended Properties の値に TEXT と入力します。
- 接続のテストボタンを押してテストします。
とこのようになります。実際にDBを扱う時は、テキストファイル(テーブル)を1つのディレクトリにまとめて、データベースとします。また、schema.ini という各テーブルのスキーマを定義したファイルも同じディレクトリ(データベース)に入れておきます。
ADOページの「テキストデータへのアクセス方法」もあわせてご覧ください。