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


レコードセットオブジェクトの作成_ダイナセットタイプ : DAO入門講座



Recordsetオブジェクトタイプの中で、最も利用頻度が高い dbOpenDynaset タイプを取り上げます。

ダイナセットタイプ

ダイナセットタイプのRecordsetオブジェクトは、ローカルテーブルやリンクテーブルだけではなく、クエリやSQLステートメントでも作成が可能です。ローカルテーブルを以外であれば、定数 dbOpenDynaset を省略することもできます。なお、スナップショットタイプと異なり、レコードの追加、編集、削除が可能です。

  • ローカルテーブルの既定の定数 : dbOpenTable(テーブルタイプ)
  • ローカルテーブル以外の既定の定数 : dbOpenDynaset(ダイナセットタイプ)

利用する場合は、OpenRecordsetメソッドの引数に dbOpenDynaset を記述します。

事例 1 - テーブルの作成

下記のような、取引先別売上げリストテーブルを作成します。

Subプロシージャの作成

下記のサンプルコードは、カレントデータベースにある取引先別売上げリストテーブルを、dbOpenDynasetタイプのレコードセツトで開きます。 次に、Updateメソッドを用いて「売上金額」フィールドのレコードを全て5%増に更新します。最後に、Do Until 〜 Loopを用いて、全フィールドレコードをイミディエイト画面に書き出します。

 Sub DynasetShow()
        
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("取引先別売上げリスト", dbOpenDynaset) ' --- A
    
    Do Until rs.EOF '--- B
        rs.Edit ' --- C
        rs!売上金額 = rs!売上金額 * 1.05
        rs.Update ' --- D
        rs.MoveNext
    Loop
    
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
        
End Sub
プロシージャ解説
  1. --- テーブルレコードを開くので、定数dbOpenDynasetの記述を省略できません。
  2. --- EOFプロパティを用いて、全レコードを対象にループさせます。
  3. --- Updateメソッドを用いる場合は、事前にEditメソッドでデータの編集を行うことを宣言します。
  4. --- Updateメソッドでフィールドデータを更新、保存します。
実行結果

テーブルデータが下記のように更新されます。

事例 2 - テーブルの作成

次の事例としては、Recordsetオブジェクトを利用しない方法をご紹介します。SQLステートメントの実行を行うには、Recordsetオブジェクトを必要としない場合が多いです。

下記のような、取引先別売上げリストテーブルを作成します。

Subプロシージャの作成

下記のサンプルコードは、カレントデータベースにある取引先別売上げリストテーブル 元に、更新SQLステートメントを作成しています。そのSQLを Executeメソッドで実行する、簡易なプロシージャです。

Sub SQLShow()
        
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim MySQL As String
    
    Set db = CurrentDb()
    MySQL = "UPDATE 取引先別売上げリスト SET 売上金額 = 売上金額 * 1.05;" ' --- A
    
    db.Execute MySQL ' --- B
    
    db.Close: Set db = Nothing
        
End Sub
プロシージャ解説
  1. --- SQLのUPDATE句を用いて、売上金額フィールドのレコード全てを5%増加させます。
  2. --- Executeメソッドは、DAOでアクションクエリを実行するメソッドです。選択クエリを実行すると、エラーが発生しますのでご注意下さい。
実行結果

テーブルデータが下記のように更新されます。

オプション設定

ダイナセットタイプのRecordsetオブジェクトでは、下記のオプション設定を行うことでレコードセットの最適化を行うこともできます。このオプション設定は省略可能です。

  • dbAppendOnly

この定数を利用すると、ダイナセットに新規レコードを追加することはできますが、既存のレコードを編集することができなくなります。

(例)

     Set rs = db.OpenRecordset("テーブル名", dbOpenDynaset, dbAppendOnly)
  • dbDenyWrite

この定数を設定すると、他のユーザーがユーザーインターフェイス(データベースウィンドウからテーブルデータを操作すること)を介したり、別のレコードセツトを利用して、そのテーブルのレコードを編集、削除、または追加することができなくなります。

(例)

     Set rs = db.OpenRecordset("テーブル名", dbOpenDynaset, dbDenyWrite)
  • dbReadOnly

この定数を用いると、他のユーザーはそのテーブルデータを読み取ることしかできなくなります。つまり、Recordsetオブジェクトが閉じられるまで、他のユーザーはレコードの編集ができません。

(例)

     Set rs = db.OpenRecordset("テーブル名", dbOpenDynaset, dbReadOnly)
  • dbInconsistent

この定数を用いると、矛盾を含んでいる場合でもレコードセットの更新が可能になります。テーブル間のリレーション関係に矛盾が生じる場合でも、それぞれそのテーブルデータを更新します。

(例)

     Set rs = db.OpenRecordset("テーブル名", dbOpenDynaset, dbInconsistent)
  • dbConsistent

この定数を用いると、矛盾が生じる場合はレコードセットの更新を行うことができません。既定値は、この定数になっています。Accessの参照整合性をもとに制御が掛かります。

(例)

     Set rs = db.OpenRecordset("テーブル名", dbOpenDynaset, dbConsistent)

 

2004/05/05

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

 


レコードセットオブジェクトの作成_ダイナセットタイプ : DAO入門講座


 

-Microsoft Access Club-

アダルト・ゲーム配信可能なPLESKパネル付属の専用・共有レンタルサーバーを提供しています。
アダルトやゲーム配信が可能です。
全専用/共有レンタルサーバーにPLESKパネルをインストール済み。