Access VBA レコードを表示するプログラムの解説。

前回作成した、DAOを使って Access のテーブルからレコードを表示する VBA のプログラムについて説明します。

簡単にまとめると、レコードセットを取得し、Do Untilステートメントで、レコードの終端になるまでの間、フィールドの値を取り出して、イミディエイト ウィンドウに表示し、次のレコードに進む、という処理を繰り返しています。

*レコードセットとは、レコードの集まりだとイメージしてください。

それでは前回のプログラムを、詳しく見てみましょう。


Sub dispData()
  Dim db As DAO.Database
  Set db = CurrentDb

  Dim rs As DAO.Recordset
  Set rs = db.OpenRecordset("T01Prefecture")

  Do Until rs.EOF
    Debug.Print rs.Fields("PREF_CD") & " " & rs.Fields("PREF_NAME")
    'Debug.Print rs!PREF_CD & " " & rs!PREF_NAME
    rs.MoveNext
  Loop

  rs.Close
  Set rs = Nothing
  db.Close
  Set db = Nothing

End Sub



【解説】

(1)コメント化について

VBAでは行の先頭に、半角の「'」シングルクォーテーションを付けると、その行はコメントとなります。コメントはプログラムとして解釈されないので、動作に影響を与えません。

'Debug.Print rs!PREF_CD & " " & rs!PREF_NAME

コメントは、プログラムを一時的に機能しないようにしたり、注釈として説明を加えたりする場合に使われます。


(2)レコードセットオブジェクト型の変数を宣言している部分です。
Dim rs As DAO.Recordset


(3)レコードセットを開いている部分です。
Set rs = db.OpenRecordset("T01Prefecture")

*OpenRecordset()の引数には、テーブル名、クエリー名、SQL文が指定できます。


・クエリを指定する場合
Set rs = db.OpenRecordset("Q03Prefecture")

・SQL文を指定する場合
Set rs = db.OpenRecordset("SELECT * FROM T01Prefecture")

クエリ「Q03Prefecture」は Microsoft Access初心者入門講座 の手順で進めてきた場合に表示できます。

SQL文については Access SQL初心者入門講座 で詳しく説明しています。


(4)指定した条件になるまで、処理を繰り返している部分です。

Do Until rs.EOF
  繰り返す処理
Loop

EOF(End Of File)は、レコードの終端を表す記号です。つまりレコードが無くなるまで、処理を繰り返します。


(5)カレントレコードのフィールドの値を取得して、イミディエイト ウィンドウに表示している部分です。どちらでも同じ結果になります。

Debug.Print rs.Fields("PREF_CD") & " " & rs.Fields("PREF_NAME")
Debug.Print rs!PREF_CD & " " & rs!PREF_NAME

書籍によって書き方が違うので、両方覚えておくとよいでしょう。


(6)カレントレコードとは現在のレコードのことで、Recordsetオブジェクトの位置は、最初は1行目にあります。

以下の図のようなイメージです。
access-vba-167.gif


(7)Recordsetオブジェクトの位置を、次のレコードに移動している部分です。
rs.MoveNext

以下の図のようなイメージです。
access-vba-168.gif

他にもいろいろ用意されています。
・Move 1 レコードを1つ進める
・Move -1 レコードを1つ戻る
・MoveFirst 最初のレコードに移動
・MoveLast 最後のレコードに移動
・MoveNext 次のレコードに移動
・MovePrevious 前のレコードに移動


(8)レコードセットを閉じている部分です。
rs.Close

*レコードセットは、必ずデータベースの前に閉じます。


(9)オブジェクトの関連付けを無効にしている部分です。
Set rs = Nothing


スポンサードリンク

スポンサードリンク






Access VBA 初心者入門講座 TOPへ