プロが教えるわが家の防犯対策術!

テーブルのすべてのフィールド名を配列として取り出せるように変数に格納したいのですが
詰みました。

Private Sub test()
Dim cat As ADOX.Catalog
Dim clm As ADOX.Column
Dim tmp As Variant
Dim myTable As String

myTable = "T_Table"

Set cat = CreateObject("ADOX.Catalog")
cat.ActiveConnection = CurrentProject.Connection

For Each clm In cat.Tables(myTable).columns
tmp = Array("フィールド1", "フィールド2")
Next clm

End Sub

のようなことがしたいのですが、clm.nameでせっかく名前が取得できるのに、
どうやったらtmpに格納できるのでしょうか?

Arrayを使わない方法はあるのでしょうか?

A 回答 (2件)

RecordSetじゃダメなんですか?



rs.fields.countで件数を取得
取得した件数分ループ
  rs.field(添え字).nameで列名
  rs.field(添え字).nameで列名
ループ終わり

で列ごとの名前・内容が取れたと思います。
    • good
    • 0
この回答へのお礼

ADOX使わなくてもADOでイケました。

お礼日時:2013/02/26 20:39

tmpの配列を先に確保してから1個ずつ入れていったらいいと思います。



Dim i As Integer
ReDim tmp(1 To cat.Tables(myTable).columns.Count)
i = 0
For Each clm In cat.Tables(myTable).columns
i = i + 1
tmp(i) = clm.Name
Next clm
    • good
    • 0
この回答へのお礼

ADOXを使えばこういう方法もあるのですね。

お礼日時:2013/02/26 20:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!