ACCESS VBA EOFの使い方

EOFの使い方

ACCESSのADOでループ処理を行う際、レコードセットが最終レコードに到達したことを判定するために利用するのがEOFプロパティです。

今回は、EOFの使い方をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

EOFとは

EOFとはEnd Of Fileの略で、ACCESSではVBAでADO(ActiveX Data Objects)を利用する際に、レコードセットに対して利用できるプロパティです。
レコードセットのカレントレコード位置が、最終レコードより後にあるかどうかを判定することができます。

以下の構文で利用します。

レコードセット.EOF

レコードセットが最終レコードに到達している場合は、値がTrueになります。

EOFの利用方法

EOFはほとんどが、ループ処理の脱出条件に利用されます。
レコードセットのEOFがTrueの場合に処理を終了させる、という使い方です。

以下にEOFを使ったVBAのプロシージャの例を示します。


Public Sub nyukin_kaijo()

'変数を定義
Dim cnn As ADODB.Connection
Dim rst1 As ADODB.Recordset

'変数にADOオブジェクトを代入
Set cnn = CurrentProject.Connection
Set rst1 = New ADODB.Recordset
rst1.CursorLocation = adUseClient

'レコードセットを取得
rst1.Open "TRN_請求", cnn, adOpenKeyset, adLockOptimistic

'入金にチェックが入ったレコードのみを抽出
rst1.Filter = "入金 = true"

If rst1.RecordCount = 0 Then

    '対象レコードが無ければ処理終了
    Exit Sub

Else

    '請求チェックを解除
    Do Until rst1.EOF
    
        rst1!入金 = False
        rst1.MoveNext

    Loop

End If

'終了処理
rst1.Close: Set rst1 = Nothing
cnn.Close: Set cnn = Nothing

End Sub
 

TRN_請求というテーブルで、入金フィールドにチェックが入ったレコードのみを抽出して、入金チェックを外すというプロシージャです。
VBAでこうしたテーブルの値の更新を行う際はADOの利用が必須になります。

この中で、EOFは下記で利用しています。


    Do Until rst1.EOF
    
        rst1!入金 = False
        rst1.MoveNext

    Loop
 

ループ処理の脱出条件として、Do Until構文で使っています。

正確に記述すると


 Do Until rst1.EOF = True
 

で、rst1、つまりTRN_請求テーブルのEOFがTrueであればループを脱出する、という記述です。

このように、EOFはループの脱出条件で多用されますので、覚えておくと便利でしょう。

以上、EOFの使い方をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。