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


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



レコードセットを開く(作成する)には、Databaseオブジェクトに対してOpenRecordsetメソッドを使用します。また、事前に、オブジェクト変数をRecordsetオブジェクトとして宣言しておく必要もあります。

レコードセットを開く

データ処理は、Recordsetオブジェクトを用いて、レコードセットを開くことから始まります。

レコードセツトを開くということは、実際にデータベースウィンドウからTableオブジェクト、Queryオブジェクトを開くのではなく、メモリー上でこれらを開くということになります。

  • Formオブジェクトを開いて、レコードソースに指定したテーブルにレコードを追加、修正、削除を行うことは、ユーザーインターフェイスを介してデータ処理を行うことです。
  • 逆に、DAOを用いるということは、コードを介してデータの処理を行うことです。

テーブルタイプのレコードセットの作成

テーブルタイプのRecordsetオブジェクトを作成することができるのは、リンクテーブル以外のローカルのテーブルだけです。このところが重要ですね。

テーブルの作成

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

Subプロシージャの作成

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

Sub RecordAllShow()
        
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    
    Set db = CurrentDb() '--- A
    Set rs = db.OpenRecordset("取引先別売上げリスト", dbOpenTable)
    
    Do Until rs.EOF
        Debug.Print rs!ID & " , " & rs!取引先 & " : \" & rs!売上金額 '--- B
        rs.MoveNext '--- C
    Loop
        
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
        
End Sub
プロシージャ解説
  1. --- CurrentDb関数でオブジェクト変数dbに対して、カレントデータベースのにインスタンスを渡します。
  2. rs!IDとは、カレントレコード(この場合先頭行)のIDフィールドの値です。
  3. --- MoveNextメソッドを用いて、カレントレコードを次々と移動させていきます。
フィールドの参照形式 説明
Recordset(0)
オブジェクトのインデックス番号を用いる方法。Recordsetオブジェクトを作成した順番に、0から始まる番号を自動的に付与されています。ここでは、rs(0)がID、rs(2)が取引先、…になります。
Record("ID")
""内にフィールド名を指定する形式です。rs("ID")がIDになります。
Record!ID
感嘆符(!)に続いてフィールド名を指定する形式です。一般的には、この形式が主流になっています。
dbOpenTable定数の省略
  • ローカルのテーブルをテーブルタイプのRecordsetオブジェクトとして開く場合は、dbOpenTable定数を敢えて使用する必要がありません。この定数は、ローカルテーブルのデフォルトのレコードセットタイプであるからです。

(例)

    Set rs = db.OpenRecordset("取引先別売上げリスト", dbOpenTable) ---- 文法どおりに記述。

    Set rs = db.OpenRecordset("取引先別売上げリスト") ---- 省略して記述。

メモリーの解放
  • レコードセツトを開くと、メモリー内にデータが読み込まれますので、終了時には必ず、メモリーを解放しなければパフォーマンスの低下を招きます。また、各オプション設定を行っている場合もこの処理がなければ、他のユーザーはそのテーブルにフルアクセスできなくなります。
  • Closeメソッドで、オブジェクト変数 rs を閉じます。Setステートメントのオブジェクト変数 rs に、Nothingを代入します。

(例)

   rs.Close: Set rs = Nothing ---- 一行で記述。
   rs.Close
   Set rs = Nothing ---- 複数行で記述。
実行結果

イミディエイトウィンドウには、下記のようにデータが表示されます。

オプション設定

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

  • dbDenyWrite

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

(例)

     Set rs = db.OpenRecordset("取引先別売上げリスト", dbOpenTable, dbDenyWrite)
  • dbDenyRead

この定数を利用すると、他のユーザーはテーブルのレコードを読み取ることができなくなります。テーブルは、排他的にロックされた状態になります。Recordsetオブジェクトを閉じるまで、この状態が続きます。

(例)

     Set rs = db.OpenRecordset("取引先別売上げリスト", dbOpenTable, dbDenyRead)
  • dbReadOnly

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

(例)

     Set rs = db.OpenRecordset("取引先別売上げリスト", dbOpenTable, dbReadOnly)

 

2004/05/05

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

 


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


 

-Microsoft Access Club-

cPanel と PLESKをインストールした専用・共有レンタルサーバーを銀行振込でご提供中。契約書は一切不要です。
cPanel や PLESKをインストールした専用・共有レンタルサーバー
まずは1ヶ月から...。
日本国内の銀行振込がOK、契約書は不要です。