0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

accessのvbaでテーブルのデータを扱う際のメモ

Last updated at Posted at 2019-11-21

accessのvbaで特定テーブルの参照の方法

基本は、DAOオブジェクトを準備して、レコード内容を取扱う。

オブジェクト XXX を作成。

Dim XXX As DAO.Recordset

テーブル T_XXX の内容をオブジェクト XXX へセット。

Set XXX = CurrentDb.OpenRecordset("T_XXX", dbOpenTable)  

※そもそもテーブル T_XXX で特定年度を指定するなどの処置を
しておきたい場合は、SQL操作を記述し、それを引数とする。(下記例)

SQL = "SELECT * FROM T_XXX"
SQL = SQL & " WHERE 年度 = '2019'"
SQL = SQL & " ORDER BY 年度, 性別, 識別番号;"

Set XXX = CurrentDb.OpenRecordset(SQL)

予めレコードセットオブジェクト XXX が空(レコードなし)か
どうか記録する変数を準備し、

Dim XXX空判定 As Boolean

(対象のテーブルにPrimaryKeyを設定しているとき)
テーブル内容を主キーで並び替え(=index)してやる。

 XXX.Index = "PrimaryKey"

※上記SQLによって予め目的の並びに整える場合は、不要。

EOF(EndOfFileプロパティ)を用い、
レコードセットオブジェクト XXX が最初期の段階で
「カレント レコードの位置が
Recordset オブジェクトの最後のレコードより後にあるかどうか」
を取得することで、そもそも XXX はレコードを含むのか否か=空の判定 を判断する。
空でないのなら、MoveFirstによって、レコードの現在位置(ポインター)を
オブジェクトの一番初めのレコード位置 にセットしておく。

If XXX.EOF Then
        XXX空判定 = True
    Else
        XXX空判定 = False
        XXX.MoveFirst
    End If

対象テーブルの現在参照中レコードが持つ項目値を取得利用するには

XXX!目的の項目名

でOK。

※Recordset.MoveFirst メソッド (DAO) について
  https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/recordset-movefirst-method-dao
                                

そもそも1つのレコードしか保持していないようなテーブルが
参照先(システムの設定値など)の場合は、

DFirst("出力設定1", "T_基本設定")

などとすれば、上記のような手順を記述せずとも、
対象テーブルの値を取得することが可能である。

以上

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?