こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

AccessVBA:フィールドの標題名を取得したい

いつもお世話になっております
WindowsXP SP1
Access2002を使用しております。

あるテーブルのフィールド名をイミディエイトウィンドウに出力するプログラムを以下のように作成しました


'---------------------------------------------------
'ADO結果セットのフィールド名をイミディエイトウインドウに出力
'---------------------------------------------------
Sub test()

  Dim testcnt As Long

  Dim gDb_User  As ADODB.Connection
  Dim Rst   As ADODB.Recordset
  
  Set gDb_User = New ADODB.Connection
  Set gDb_User = CurrentProject.Connection
  Set Rst = New ADODB.Recordset
  
  Rst.Open "select * from テーブル1 ", gDb_User, adOpenKeyset, adLockOptimistic
  
  Debug.Print "FieldName"
  Debug.Print "--------------"
    
  For testcnt = 0 To Rst.Fields.Count - 1
    Debug.Print Rst.Fields(testcnt).name
  Next
  
  Debug.Print "--------------"
  Debug.Print "End"
  
  Rst.Close
  Set Rst = Nothing
  gDb_User.Close
  Set gDb_User = Nothing
  
End Sub
'---------------------------------------------------

実行すると、フィールドは出力されるのですが
各フィールド名の標題も取得したいと考えております。

標題のプロパティ等をどのように抽出すればよろしいでしょうか?

ご教示のほど、何卒よろしくお願いいたします。

投稿日時 - 2005-06-01 15:33:22

QNo.1422905

すぐに回答ほしいです

質問者が選んだベストアンサー

DAOを使用し、

Database.TableDefs(Item).Fields(Item).Properties("Caption").Value

の要領で取得できます。
ただし、これはJetのFieldオブジェクトに既定で設けられている (= 最初から存在する) ではなく、Accessによって作成される拡張プロパティなので、すべてのFieldに必ず存在するという訳ではありません。
(Description プロパティについても同様)

存在しないプロパティにアクセスすると実行時エラーになりますので、エラー処理が必要となります。


> Rst.Open "select * from テーブル1", gDb_User, adOpenKeyset, adLockOptimistic

フィールドの属性を取得するだけの目的なら、レコードセットを開く必要はまったくありません。
レコードの件数が多い場合、コストが高く付く処理です。

"select * from テーブル1 where 1 = 0" とでもすれば、多少はマシですが、いずれにせよ、ここでは全く無駄な処理です。

投稿日時 - 2005-06-01 18:50:24

お礼

ご回答いただきありがとうございます。

標題を消して、SQL本文に別名のフィールドをつけて抽出
することにしました。

結果セットは内部である程度使用するのですが、
質問の際、割愛しておりました。

投稿日時 - 2005-06-01 21:09:42

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問