Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1116 / 9994 ←次へ | 前へ→

【12177】テーブル項目の自動取得の並びについて
質問  しはん  - 12/10/22(月) 1:30 -

引用なし
パスワード
   初めて投稿します。

以下の様な項目をもつテーブルをEXCELに出力しようとしており
ADOを利用して追加出力しようとしているのですが
参照中に並び位置が変わってしまいます。

<ACCESSのテーブル項目の並び>
[順] [BBBB] [AAAA] [DDDD] [CCCC]

<収集された際の項目の並び>
[AAAA] [BBBB] [CCCC] [DDDD] [順]

定義を与えて固定にしてしまえば一応は解決しますが、それですと今後フィールドの増減が発生した場合
VBA側でもテーブル定義の修正が入るので出来れば避けたいと思っています。

どの様にしたら取得の順番がACCESSのテーブル項目の順番で取得されるのでしょうか?
それとも変えられないものなのでしょうか?


------------------------------------------------------

Function EXCEL()

'/参照設定 Microsoft ActiveX Data object 2.0 Library /
'-----------------------------------
Const csTbl As String = "OutPut" 'Accessテーブル名
Dim voCn As ADODB.Connection
Dim vvArryFldName As Variant 'フィールド名用配列
Dim vvRet As Variant

vvRet = SysCmd(acSysCmdSetStatus, "Accessフィールド名取得中......")
vvArryFldName = FnGetArrayFldName(csTbl)
DoEvents

End Function

'-----------------------------------
Private Function FnGetArrayFldName(argsTblName As String) As String()
Dim voRs As ADODB.Recordset
Dim vsArryFldName() As String
Dim i As Long

Set voRs = CurrentProject.Connection _
.OpenSchema(Schema:=adSchemaColumns, _
Restrictions:=Array(Empty, Empty, argsTblName, Empty))

i = 0
Do Until voRs.EOF '繰り返し 開始 -----------------------------
ReDim Preserve vsArryFldName(i)
vsArryFldName(i) = voRs![COLUMN_NAME].Value 'ソートされて格納されてしまう箇所

Debug.Print vsArryFldName(i) 'デバック結果

i = i + 1
voRs.MoveNext '次のレコードへ
Loop ' 繰り返し 終了 -------------------------------------------

FnGetArrayFldName = vsArryFldName
voRs.Close: Set voRs = Nothing

End Function

-----------------------------------
764 hits

【12177】テーブル項目の自動取得の並びについて しはん 12/10/22(月) 1:30 質問[未読]
【12183】Re:テーブル項目の自動取得の並びについて 小僧 12/10/24(水) 16:09 回答[未読]
【12205】Re:テーブル項目の自動取得の並びについて しはん 12/11/2(金) 16:15 質問[未読]

1116 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078192
(SS)C-BOARD v3.8 is Free