Excel VBAメモ Accessデータベースの空文字列を許可のプロパティを取得してみる
Accessのデータベースファイルを取り扱うときにADODB.Connectionでは取得できず困ったのでメモしとくことに。
ポイントとしてはだいたいこんな感じ。
- CreateObject(“ADOX.Catalog")でデータベースへアクセスするオブジェクトを作成する
※参照設定しないのでCreateObjectでCOMを使う必要がある - Properties(“Jet OLEDB:Allow Zero Length").Valueで空文字列の許可のプロパティを取得する
んで、サンプルとしてこんなデータベースを準備した。
テーブルとしてはこんな感じ。
それぞれのフィールドの定義はこんな感じ。
- IDってフィールドはこんな感じ。
- 名前ってフィールドはこんな感じ。
- 有無ってフィールドはこんな感じ。
- 何かの数字ってフィールドはこんな感じ。
- コメントってフィールドはこんな感じ。
で、こいつだけ空文字列の許可ってのを「はい」にしてる。
コードはこんな感じ。
Public Sub Proto() ' プロシージャの変数を定義する Dim objCatalog As Object Dim strLocation As String ' テーブルのフィールドプロパティで"空文字の許可"のステータスを ' イミディエイトウィンドウに出力する ' ※エラーになったら終了処理をする On Error GoTo ProtoEnd ' Accessファイルへのパスを設定しておく strLocation = "C:\Users\tetsuyanbo\Desktop\Sample.accdb" ' DBへアクセスするためのオブジェクトを作成する Set objCatalog = CreateObject("ADOX.Catalog") ' DBへ接続する(この文字列はOffice2007以降でaccdbっていう拡張子で動く) objCatalog.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strLocation ' 名前を指定してテーブルを取得する Set objTable = objCatalog.Tables("マスタ") ' イミディエイトウィンドウに出力する For Each objColumn In objTable.Columns Dim strResult As Boolean strResult = objColumn.Properties("Jet OLEDB:Allow Zero Length").Value Debug.Print objColumn.Name & ":" & strResult Next ProtoEnd: ' オブジェクトを破棄する If Not objCatalog Is Nothing Then Set objCatalog = Nothing End If End Sub
実際に動かしてみたらこんな感じ…フィールド名:プロパティの値って感じで表示してるんだけど、ちゃんと値が表示されとる。
ID:False コメント:True 何かの数字:False 名前:False 有無:False
そんなこんなで、明日への自分へのメモってことで。
ディスカッション
コメント一覧
まだ、コメントがありません