ACCESS VBA 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の操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。