列名の表示順

解決


Order  2005-02-12 07:19:48  No: 119566

ADOXでAccessのテーブルの列一覧を表示するプログラムを作成しています。
表示順が列名の昇順になってしまいます。
Accessのテーブルのデザインで登録したのと同じ並び順で表示したいのですが・・・

For Each In mCat.Tables("テーブル名").Columns
   Me.cboList1.additem col.Name
Next

ご教授願います。


特攻隊長まるるう  2005-02-12 12:03:08  No: 119567

Each を使わず、Columns を1からカウントして
順に取り出して下さい。


Order  2005-02-12 19:57:32  No: 119568

特攻隊長まるるうさん、ありがとうございます。
早速やってみます。


魔界の仮面弁士  2005-02-13 18:12:15  No: 119569

ADOX ではなく、ADODBライブラリの方を使うとか。

# 昔、某所に投稿したサンプルより引用。
# 結果をファイルに吐いてますが、不要なら、適当に修正してみてください。

Public Sub TableInfo(ByVal conJet As ADODB.Connection, _
                     ByVal TableName As String, _
            Optional ByVal ResultText As String = "C:\A.TXT")
    Dim RS As ADODB.Recordset
    Dim intFileNo As Integer

    '列情報を取得する
    conJet.CursorLocation = adUseClient
    Set RS = conJet.OpenSchema(adSchemaColumns, _
               Array(Empty, Empty, TableName))

    '本来の列の並び順でソートする
    '(adUseServerの時は、ソートできません)
    RS.Sort = "ORDINAL_POSITION ASC"

    '結果出力
    intFileNo = FreeFile()
    Open ResultText For Output As #intFileNo
    '--- ヘッダ部
    Write #intFileNo, "列名", "初期値", "値要求", "データ型",
    Write #intFileNo, "サイズ", "バイト数", "説明"
    '--- データ部
    Do Until RS.EOF
        Write #intFileNo, RS.Collect("COLUMN_NAME"),
        Write #intFileNo, RS.Collect("COLUMN_DEFAULT"),
        Write #intFileNo, RS.Collect("IS_NULLABLE"),
        Write #intFileNo, RS.Collect("DATA_TYPE"),
        Write #intFileNo, RS.Collect("CHARACTER_MAXIMUM_LENGTH"),
        Write #intFileNo, RS.Collect("CHARACTER_OCTET_LENGTH"),
        Write #intFileNo, RS.Collect("DESCRIPTION")
        RS.MoveNext
    Loop

    '後始末
    RS.Close
    Set RS = Nothing
    Close #intFileNo
End Sub


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

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






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