Chapter5-6 レコードの編集

テーブルやクエリのレコードに対して各種の編集を行う場合も、Recordsetとしてそれらを開いたあと、編集操作を行います。その際のポイントは次のようなものです。
  • 追加・更新・削除などのレコード編集はそれぞれのメソッドを使う

  • カレントレコードだけが対象となる

  • アクションクエリのような処理はループで処理する

レコードの追加

レコードの追加を行うには、Recordsetオブジェクトの「AddNewメソッド」と「Updateメソッド」を使います。まずAddNewメソッドを実行してこれからレコード追加を行うことを宣言し、各フィールドに値を代入、最後に1レコード分を保存するためにUpdateメソッドを実行します。
Dim dbs As Database
Dim rst As Recordset

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tbl書籍情報")
With rst
  .AddNew
    !ISBN = "9784798119847"
    !タイトル = "業務によく効くAccess 開発現場ワザ"
    !著者 = "星野 努"
    !発行日 = #7/20/2009#
    !価格 = 2300
    !消費税 = !価格 * 0.05
  .Update
  .Close
End With


※レコードを追加する場合、いったん最終レコードまで移動する必要はありません。


レコードの更新

レコードの更新を行うには、Recordsetオブジェクトの「Editメソッド」と「Updateメソッド」を使います。更新されるのはカレントの1レコードだけです。
Dim dbs As Database
Dim rst As Recordset

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tbl書籍情報")
With rst
  Do Until .EOF
    .Edit
      !消費税 = !価格 * 0.05
    .Update
    .MoveNext
  Loop
  .Close
End With


※ここで「!消費税 = !価格 * 0.05」という式がありますが、このような代入式で現在フィールドに保存されている値を別の値に更新します。なお、代入する側(右辺)の「価格」フィールドは影響を受けない、つまり値が取得されるだけで値は変更されません。

With rst
  Do Until .EOF
    .Edit
      If !価格 < 1000 Then
        !価格 = !価格 * 0.9
      ElseIf !価格 < 2000 Then
        !価格 = !価格 * 0.85
      Else
        !価格 = !価格 * 1.03
      End If
    .Update
    .MoveNext
  Loop
  .Close
End With



レコードの削除

レコードの削除を行うには、Recordsetオブジェクトの「Deleteメソッド」を使います。削除されるのはカレントの1レコードだけです。
Dim dbs As Database
Dim rst As Recordset

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tbl書籍情報")
With rst
  Do Until .EOF
    .Delete
    .MoveNext
  Loop
  .Close
End With



※Deleteメソッドを実行した時点で、当該テーブルの1レコードが削除されます。しかしレコードセット上は、完全に削除されるのではなく、空のレコード(アクセスは不可)として残っています。そのため、次のレコードを削除するためにはMoveNextメソッドでレコード移動しなければなりません。
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved