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

レコードセットオブジェクト内の特定のレコードを更新するときは、レコードセットオブジェクトのEditメソッドとUpdateメソッドを使います。
EditとUpdateの使用例
まずは「レコードセット内のどのレコードが更新対象となるか」ですが、これは現在読み込まれているレコードです。読み込まれているレコードに対してEditメソッドを実行すると、そのレコードの編集(フィールドへの値の設定など)が出来るようになります。

ただし、Editメソッドを実行しレコードを編集しただけでは、実際の更新(レコードの更新)は行われません。編集した内容を反映するときは、Updateメソッドを実行します。Updateメソッドは、更新した内容の保存と考えれば良いでしょう。

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

Sub prcEditUpdate2000()

    'Access VBA Tips
    '2.9 レコードセットの操作/更新
    '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.Edit
       daoRS!漢字氏名 ="鬼瓦権三郎"
       daoRS!関係 = 3
       daoRS.Update
    End If

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

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

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



Sub prcEditUpdate97()

    'Access VBA Tips
    '2.9 レコードセットの操作/更新
    '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.Edit
       daoRS!漢字氏名 ="鬼瓦権三郎"
       daoRS!関係 = 3
       daoRS.Update
    End If

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

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

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