では、いよいよVBAを使用して非連結フォーム上に入力したデータをテーブルへ追加、更新、削除を行います。
その前に、なぜ、わざわざ非連結フォームを使用するかについてです。
ご存知のとおり、ACCESSはフォームのレコードソースにテーブルを指定することで連結フォームになります。連結フォームを使用することでテーブルへのデータ入力が容易になります。
横に長いテーブルに1フィールドずつデータを入力するより、1画面にまとまった入力フォームを使用する方が入力しやすいし、ミスも少なくなります。
連結フォーム機能はACCESSを使用するメリットの一つで、入力フォームをプログラミングせずに作成することができます。
デメリットとしては、ACCESSはスタンドアロン(1つのパソコンにACCESSファイルを置き、使用するユーザーは1人。)で動かすことを前提としているので、ファイルサーバーにACCESSファイルを置き、複数人で使用する環境には向きません。
こんな環境にはSQL Serverなどのデーターベースを使用することが良いのですが、小規模のデーターベースには費用面や運用の難しさから導入は一気に難しくなります。
このような事情があるためファイルサーバーにACCESSファイルを置き、複数人で使用する使い方をするわけですが、こんな環境では連結フォームを使用すると壊れやすくなります。非連結フォームでVBAを使用してデータを追加・更新していくことが、データーベースの安定性を高めることがポイントの一つです。
さて、非連結フォームに配置したテキストボックスに入力したデータをテーブルに反映させる手続きを説明します。
ACCESSでは、DAO(Data Access Object)という仕組みを使います。
ACCESSは、mdbファイル(accdbファイル)を操作するソフトですが、mdbファイルは、内部でテーブル・クエリを扱うデーターベース部とフォーム・レポート・マクロ・VBAを扱うインターフェース部とに分かれています。
余談ですが、テーブルとクエリは同じ名前をつけることができないのに、テーブルとフォームは同じ名前をつけることができるのは、このような事情があるからです。
データーベース部の名前は Jet Database Engine という名前のデーターベースエンジンがテーブルやクエリを管理しています。
フォームやレポートとのデータのやり取りは、DAOやADO(ActiveX Data Objects)というミドルウェア(データーベース部とインターフェース部との間を受け持つソフトウェア)を介して行っています。
つまり、非連結フォームからレコードを操作するには、DAOやADOに命令を投げれば良いのです。
前置きはこのぐらいにして、次回は実際にDAOを使ってレコードを操作してみましょう。
コメントをどうぞ!