MDBのフィールド名を順番どおりに取得するには?

解決


うの  2004-01-11 02:22:32  No: 81382

過去ログを調べて以前に同じ質問が出ていましたが、
自己解決となっていて解決法がわからなかった為、
同じ質問させて頂きます。

MDB内のテーブル名のリストを取得し、それぞれの
テーブルのフィールド名や定義情報等を取得したい
と思っています。
ADOXでColumnのNameプロパティを使用して取得は
できたのですが、フィールド名の昇順でソートされ
てしまいます。MDBのテーブルと同じ順序で取得する
事は可能でしょうか?

ご存知の方おられましたらご教授お願いします。


魔界の仮面弁士  2004-01-11 03:53:56  No: 81383

ConnectionオブジェクトのOpenSchemaメソッドで取得してみるとか。


岡田 之仁  2004-01-11 08:49:44  No: 81384

ADOのRecordsetでテーブルを取得しても、Fileds()情報に
名称やタイプ、項目長は入っています。

そちらでも取得が可能です。

以上。


うの  2004-01-14 23:40:31  No: 81385

ありがとうございました。
ADOでは順番に取れるようです。
NOT NULLが取れないのでADOXと繋げる作業が必要そうですが・・・


魔界の仮面弁士  2004-01-15 00:38:34  No: 81386

> 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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加