Microsoft Access Club >ADO入門講座 >このページ >次頁 < 前項  サイト内検索
 

編集可能なレコードセットを作成する - Updateメソッド: ADO入門講座



今回は、レコードセットの基本となる定型文を取り上げて見ましょう。サンプルレコードは、相も変わらずT_売り上げ管理テーブルです。

売上日 社員名 性別 売上額 職種
2004/01/23 橘 修平 男性 52100 一般職
2004/02/04 横田 正一 男性 654100 技能職
2004/02/04 柴田 喜一 男性 7892510 技能職
2004/03/25 正道 良一 男性 4875210 薬剤師
2004/04/30 田中 邦子 女性 785100 一般職
2004/04/30 木島 良子 女性 4789210 一般職
2004/07/29 草薙 良子 女性 120310 医師
2004/08/10 田中 幸恵 女性 7986620 一般職
2004/09/30 中村 幸三 男性 477123 技能職

編集可能なレコードセットの作成

レコードセットを用いてテーブルレコードの値を操作します。以下の点に留意して下さい。

  1. Openメソッドの引数に編集可能な定数を指定します。
  2. RecordsetオブジェクトのUpdateメソッドを用います。

留意点
  • 編集する目的のレコードをカレントレコードの位置に移動させなければ、Updateメソッドを用いてレコードを編集することができません。

Updateメソッドの構文

Updateメソッドの構文は、以下のような組み合わせになります。

Recordsetオブジェクト + .(ドット) + Updateメソッド + Field + ,(カンマ) + Value

項目 意味
Recordsetオブジェクト 開いているRecordsetオブジェクト
Field 代入するフィールド名
Value 代入する値
補足
  • カレントレコードを移動するのに、Move系メソッドやFindメソッドを用います。
  • 全てのレコードを編集するには、EOFプロパティとDo〜Loopステートメントを組み合わせます。

Updateメソッドを用いたSubプロシージャ

T_売り上げ管理テーブルでレコードセットを開きます。T_売り上げ管理テーブルの売上額フィールドの値が10000以上である場合、5%を上乗せします。

Sub ADORecordsetUpdate()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    
    rs.Open "T_売り上げ管理", cn, adOpenKeyset, adLockOptimistic ' --- A
    
    Do Until rs.EOF
        If rs!売上額 > 100000 Then
            rs.Update "売上額", Fix(rs!売上額 * 1.05) ' --- B
        End If
        Debug.Print rs!売上日, rs!社員名, rs!性別, rs!売上額
        rs.MoveNext
    Loop
    
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
解説
  1. カーソルタイプをキーセットカーソル(全ての方向にスクール可能)、ロックタイプをオプティミスティツクロッキング(共有ロック)を指定しています。
  2. 売上額フィールドの値に1.05を乗じ、Fix関数を用いて小数点以下の端数を切り捨てます。
実行結果
  • イミディエイト画面には以下のデータが表示されます。
    (ADORecordsetUpdateはイミディエイト画面上でプロシージャを実行するためのプロシージャ名です)

  • 次に、T_売り上げ管理テーブルを以下のように開きます。
  • テーブル内の売上額フィールドの値は更新されています。
  • Updateメソッドを用いてレコードセット内で値を変更すると、直ちにテーブルフィールドに反映します。

一括してデータを更新する場合

次は、Updateメソッドに引数を用いてない場合をご紹介します。

    Do Until rs.EOF
        If rs!売上額 > 100000 Then
            rs.Update "売上額", Fix(rs!売上額 * 1.05) ' --- B
        End If
        Debug.Print rs!売上日, rs!社員名, rs!性別, rs!売上額
        rs.MoveNext
    Loop

前掲のSubプロシージャを以下のように変更します。

    Do Until rs.EOF
        If rs!売上額 > 100000 Then
            rs!売上額 = Fix(rs!売上額 * 1.05)
            rs.Update '引数は不要です。
        End If
        Debug.Print rs!売上日, rs!社員名, rs!性別, rs!売上額 ' --- B
        rs.MoveNext
    Loop
留意点

Updateメソッドには、次に掲げる特性があります。

  • Update メソッドを呼び出す前に、追加または編集を行っているレコードから移動すると、自動的に Update が呼び出され、変更が保存される。

このため、前掲のrs.Updateを特に記述しなくてもテーブルフィールドに変更された値が保存されます。

 

2004/09/04

ページの先頭へ 前ページへ戻る


編集可能なレコードセットを作成する - Updateメソッド: ADO入門講座


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。