VBAでは、テーブルやクエリのレコード、あるいはその構造までもさまざまな方法で操作することができます。どのような操作を行うかによって、使用するDAOのオブジェクトやメソッドなどは異なりますが、全体的な基本フローは共通です。おおむね次のような流れで処理を記述します。
- データベースオブジェクトを開く
VBAでは、自分自身のデータベースだけでなく、外部のデータベースファイルも指定できます。自分自身の場合は、データベースオブジェクト変数に「CurrentDb」メソッドの返り値をセットする形でデータベースを開きます。
- SQL文を実行する(バッチ処理の場合)
更新クエリや削除クエリのようなバッチ的な処理については、データベースオブジェクトに対してSQL文を発行する形でその処理を実行します。
- レコードセットオブジェクトを開く(レコードを扱う場合)
1件1件のレコードを対象に、読み込み・更新・追加等の処理を行なう場合には、データベースオブジェクトの下位に属するレコードセットオブジェクトを開きます。レコードセットは、テーブルやクエリの全レコードとフィールドが文字通り"セット"で格納されているオブジェクトと考えられます。
レコードセットオブジェクトを開くには、データベースオブジェクトの「OpenRecordset」メソッドを実行します。第1引数として、テーブル名やクエリ名、あるいはSELECT文から成るSQL文を指定することができます。このメソッドは、他にもレコードセットのタイプやロックなどを設定する引数がありますが、通常はそれほど厳密に考える必要はありません。
- レコードセットに対して処理を行なう
開いたレコードセットに対して、レコードセットオブジェクトのいくつかのメソッドを使い、読み込み・更新・追加・削除、あるいは検索やレコード移動等の操作を行います。
実際には、レコードセットを開いた時点で、先頭のレコードが読み込まれ、各フィールドのデータを取得できる状態にあります。各フィールドデータは、レコードセットオブジェクトの下位のオブジェクトとして管理されています。
- レコードセットオブジェクトを閉じる
「Close」メソッドを使って閉じます。明示的に閉じる方がベターですが、実際にはプロシージャを抜けた時点でオブジェクト変数は破棄されますので、省略してもあまり問題とはなりません。
- データベースオブジェクトを閉じる
「Close」メソッドを使って閉じます。これも省略してもよいでしょう。
|