HOME > 即効テクニック > AccessVBA > データベース・データ保護 > テーブルが空かどうかを調べる

即効テクニック

データベース・データ保護

テーブルが空かどうかを調べる

(Access 2000/2002/2003)
●概要●
構文    expression.EOF    取得のみ
        expression.BOF    取得のみ

設定項目        内容
expression      Recordsetオブジェクト[省略不可]

カレントレコードが最初のレコードの前に設定されるとBOFプロパティがTrueになり、最後のレコードの後に設定されるとEOFプロパティがTrueになります。Recordsetオブジェクトを開いたときにレコードが1件もない場合、BOFプロパティ、EOFプロパティはともにTrueに設定され、カレントレコードも未定義となります。
ここでは、5件のレコードを含む「社員テーブル」と、レコードのない「給与テーブル」をデータソースとしてRecordsetオブジェクトを作成し、それぞれについてRecordsetオブジェクトのBOF、EOFプロパティを使用してテーブルが空かどうかチェックします。

●設定●
動作確認をするためには、Visual Basic Editorのメニューから[ツール]→[参照設定]コマンドを選択し、[参照設定]ダイアログボックスで「Microsoft DAO 3.6 Object Library」にチェックを入れてください。

●サンプル●
Public Sub IsNullTableSample()
    Dim myDB As Database
    Dim myRS As DAO.Recordset
    'カレントデータベースを変数に代入する
    Set myDB = CurrentDb
    '[社員テーブル]をデータソースとしてレコードセットを開く
    Set myRS = myDB.OpenRecordset("社員テーブル", dbOpenTable)
    'BOFプロパティ、EOFプロパティが共にTrueかどうかをチェックする
    If myRS.BOF And myRS.EOF Then
        MsgBox "社員テーブルは空です"
    Else
        MsgBox "社員テーブルは空ではありません"
    End If
    '[給与テーブル]をデータソースとしてレコードセットを開く
    Set myRS = myDB.OpenRecordset("給与テーブル", dbOpenTable)
    'BOFプロパティ、EOFプロパティが共にTrueかどうかをチェックする
    If myRS.BOF And myRS.EOF Then
        MsgBox "給与テーブルは空です"
    Else
        MsgBox "給与テーブルは空ではありません"
    End If
    'レコードセットを閉じる
    myRS.Close
End Sub