DAOを使ったレコード操作
DAOオブジェクトの概要
DAOは、「Data Access Objects」の略です。Access2002では標準ではADOを使うように設定されていますが、、ADOでは連結フォームのレコードソースを扱うことができません。連結フォーム上でレコードを操作する場合には、DAOオブジェクトを使う必要があります。
DAOを利用するには、次の方法で必要なライブラリを追加します。
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 → 検索条件を表す文字列(値、および変数はシングルコーテーションでくくる)
《サンプル》 次の例では、インプットボックスに顧客名を入力して、レコードの先頭から検索します。
《サンプル》 次の例では、「顧客検索」で使ったインプットボックスの値を使って、カレントレコード以降を検索しています。