DAOを使ったレコード操作

 

DAOオブジェクトの概要 

DAOは、「Data Access Objects」の略です。Access2002では標準ではADOを使うように設定されていますが、、ADOでは連結フォームのレコードソースを扱うことができません。連結フォーム上でレコードを操作する場合には、DAOオブジェクトを使う必要があります。

DAOを利用するには、次の方法で必要なライブラリを追加します。

  1. VBEの「ツール」メニューから「参照設定」を選択します。
  2. 「Microsoft DAO 3.6 Object Library」を選択します。
  3. 「OK」をクリックします。

ADO、DAO とも、レコードセットを扱うオブジェクトは、Recordsetです。どちらのRecodesetを使っているのかがあいまいになりますので、必ずオブジェクトを提供するコンポーネントの名前を付けます。

DAOオブジェクトの宣言 

DAOオブジェクトを提供するコンポーネントはDAOです。クラス名とオブジェクト名をドットで区切って宣言します。DAOでは新規のRecordsetオブジェクトを作成することはできません。

連結フォームのレコードソースをもとにレコードセットを作成するには次のような書式を使います。

Set recordset = Forms!formname.RecordsetClone 

《サンプル》

次の例では、「F_得意先編集」フォームのレコードソースをもとに、Recordsetオブジェクトを作成します。フォームが開いてない場合はエラーになります。
連結フォームに表示されるレコードセットと、RecordCloneプロパティを使って作成したRecordsetオブジェクトとは異なります。2つのレコードセットでカレントレコードを同期させるには、Bookmarkプロパティを使います。
RecordsetCloneプロパティで作成したBookmarkプロパティと、連結フォームのBookmarkプロパティの値は同じなので、一方のBookmarkプロパティの値をもう一方に代入すると、カレントレコードの位置を同期させることができます。

 

DAOのRecordsetオブジェクトでできる処理 

処理 メソッド
移動 MoveFirst、MovePrevious、MoveNext、MoveLast
編集 Edit、Update
削除 Delete
検索 FindeFirst、FindePrevious, FindNext, FindLast
抽出 Filter
並べ替え Sort

 

レコードを検索するには 

DAOのRecordsetオブジェクトでは、Find系のメソッドを使ってレコードを検索します。検索位置と方向によって4つのメソッドを使い分けます。該当するレコードが見つからない場合は、Nomatchプロパティに「True」が返されます。

Recordset.FindFirst criteria レコードセットの先頭から検索
Recordset.FindPrevious criteria カレントレコードより前を検索
Recordset.FindNext criteria カレントレコード以降を検索
Recordset.FindLastt criteria レコードセットの最終から検索

Recordset → 開いているRecordsetオブジェクト
criteria   → 検索条件を表す文字列(値、および変数はシングルコーテーションでくくる)

《サンプル》 次の例では、インプットボックスに顧客名を入力して、レコードの先頭から検索します。

《サンプル》 次の例では、「顧客検索」で使ったインプットボックスの値を使って、カレントレコード以降を検索しています。