過去ログを調べて以前に同じ質問が出ていましたが、
自己解決となっていて解決法がわからなかった為、
同じ質問させて頂きます。
MDB内のテーブル名のリストを取得し、それぞれの
テーブルのフィールド名や定義情報等を取得したい
と思っています。
ADOXでColumnのNameプロパティを使用して取得は
できたのですが、フィールド名の昇順でソートされ
てしまいます。MDBのテーブルと同じ順序で取得する
事は可能でしょうか?
ご存知の方おられましたらご教授お願いします。
ConnectionオブジェクトのOpenSchemaメソッドで取得してみるとか。
ADOのRecordsetでテーブルを取得しても、Fileds()情報に
名称やタイプ、項目長は入っています。
そちらでも取得が可能です。
以上。
ありがとうございました。
ADOでは順番に取れるようです。
NOT NULLが取れないのでADOXと繋げる作業が必要そうですが・・・
> NOT NULLが取れないのでADOXと繋げる作業が必要そうですが・・・
あれ? こちらで試した限りでは、NOT NULLも取得出来ましたが…。
バージョンの違いでしょうかね。
Private Sub Form_Load()
Dim Cn As ADODB.Connection
Dim Fld As ADODB.Field
Dim RS As ADODB.Recordset
Dim TableName As String
TableName = "Customers"
Set Cn = New ADODB.Connection
Cn.Provider = "Microsoft.Jet.OLEDB.4.0"
Cn.Open "C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB"
Cn.CursorLocation = adUseClient
Set RS = Cn.OpenSchema(adSchemaColumns, Array(Empty, Empty, TableName))
RS.Sort = "ORDINAL_POSITION"
Debug.Print "列名"; Tab(20); "NULL許可"; Tab(30); "説明"
Do Until RS.EOF
Debug.Print RS.Fields("COLUMN_NAME").Value; Tab(20);
Debug.Print RS.Fields("IS_NULLABLE").Value; Tab(30);
Debug.Print RS.Fields("DESCRIPTION").Value & ""
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
Cn.Close
Set Cn = Nothing
End Sub
ツイート | ![]() |