2.10 レコードセットの操作/削除
レコードセットオブジェクト内の特定のレコードを削除する方法です。この方法は、SQLのDELETE文を使わない削除の方法です。

レコードセットオブジェクト内の特定のレコードを削除するときは、レコードセットオブジェクトのDeleteメソッドを使います。
Deleteの使用例
まずは「レコードセット内のどのレコードが削除対象となるか」ですが、これは現在読み込まれているレコードです。読み込まれているレコードに対してDeleteメソッドを実行すると、そのレコードが削除されます。

削除については、実行したときに削除されてしまいます。一度削除してしまうとレコードの復活は出来ないので注意しましょう。

例では、「住所録テーブル」というテーブルを開き、フィールド「漢字氏名」が鬼瓦権蔵というレコードをFindFirstメソッドで検索。見つかった場合はそのレコードを削除しています。

Sub prcDelete2000()

    'Access VBA Tips
    '2.10 レコードセットの操作/削除
    'Access2000以降での手順

    Dim daoDB As DAO.Database
    Dim daoRS As DAO.Recordset

    'データベースのオープン(データベースオブジェクトの作成)
    Set daoDB = CurrentDb

    'テーブルのオープン(レコードセットの作成)
    Set daoRS = daoDB.OpenRecordset("住所録テーブル", dbOpenDynaset)

    '漢字氏名が「鬼瓦権蔵」というレコードを検索します
    daoRS.FindFirst "漢字氏名 = '鬼瓦権蔵'"

    'レコードが見つかったときは、そのレコードを削除します
    If daoRS.NoMatch = False Then
       daoRS.Delete
    End If

    'テーブルのクローズ
    daoRS.Close

    'データベースのクローズ
    daoDB.Close

End Sub
 ※Access2000以降の場合。ただし、DAOを使う場合は参照設定が必要です。



Sub prcDelete97()

    'Access VBA Tips
    '2.10 レコードセットの操作/削除
    'Access97までの手順

    Dim daoDB As Database
    Dim daoRS As Recordset

    'データベースのオープン(データベースオブジェクトの作成)
    Set daoDB = DBEngine.Workspaces(0).Databases(0)

    'テーブルのオープン(レコードセットの作成)
    Set daoRS = daoDB.OpenRecordset("住所録テーブル", DB_OPEN_DYNASET)

    '漢字氏名が「鬼瓦権蔵」というレコードを検索します
    daoRS.FindFirst "漢字氏名 = '鬼瓦権蔵'"

    'レコードが見つかったときは、そのレコードを削除します
    If daoRS.NoMatch = False Then
       daoRS.Delete
    End If

    'テーブルのクローズ
    daoRS.Close

    'データベースのクローズ
    daoDB.Close

End Sub
 ※Access97までの場合。
Copyright(C) 1999-2006 結城圭介。 All rights reserved