Accessの非連結フォームについてお探しですね。
広告
Accessの「非連結」って何?初心者にもわかる連結フォームとの違いと使い分け
Accessでフォームを作っていると、テキストボックスに「非連結」という文字が表示されて「これって何?」と戸惑うことがありますよね。
あるいは、システム開発を勉強していて「非連結フォーム」という言葉を聞いて、普通のフォームと何が違うのか気になっている方もいるかもしれません。
この記事では、Accessの「非連結」の基本的な意味から、テーブルと直接つながっている「連結フォーム」との違いまで、わかりやすく解説していきます。
さらに、実際の仕事で非連結フォームがどんな場面で役立つのか、具体的な使い方のヒントもたっぷりお伝えします。
最後まで読めば、連結と非連結を上手に使い分けて、本格的な業務アプリを作るための知識がしっかり身につくはずです。
Accessの「非連結」って何のこと?
Accessのフォームをデザインビューで編集していると、テキストボックスに「非連結」と表示されることがあります。
これはエラーではなく、そのテキストボックスがデータベースのテーブルやクエリと結びついていない状態を表しています。
プロパティシートの「データ」タブにある「コントロールソース」という項目を見ると、何も入力されていない空っぽの状態になっているはずです。
テーブルやクエリを元にしてフォームを作ると、テキストボックスには自動的にフィールド名(「顧客名」とか「電話番号」など)が表示されます。
この状態でテキストボックスに値を入力すると、そのままデータベースのテーブルに保存されます。
一方で、コントロールソースを消したり、新しくテキストボックスを配置したばかりの時は、どこにもデータがつながっていないので「非連結」と表示されるわけです。
この「非連結」という状態、実は意味がないわけではありません。
システム開発の現場では、わざとコントロールソースを空にしておくテクニックがよく使われます。
たとえば、フォームのレイアウトを整えた後に、テキストボックスの表示順序(「フリガナ」と「顧客名」など)を入れ替えたい時、物理的に配置を動かすとデザインが崩れてしまうことがあります。
そんな時、コントロールソースのフィールド名だけをプロパティシートで付け替えれば、見た目はそのままで中身のデータだけを入れ替えられるんです。
連結フォームと非連結フォーム、何が違うの?
Accessのフォームは、テーブルやクエリと直接つながっている「連結フォーム」と、つながっていない「非連結フォーム」の2つに大きく分けられます。
それぞれにメリット・デメリットがあるので、作りたいシステムの目的や規模に合わせて使い分けることが大切です。
**連結フォームのいいところ・気をつけるところ**
連結フォームの最大のメリットは、プログラミングの知識がなくても簡単にデータベースを操作できることです。
フォームウィザードを使えば、数回クリックするだけでデータ入力画面が完成します。
テキストボックスに入力した内容は、すぐにテーブルに保存されます。
でも、この「すぐに保存される」という仕組みが困ることもあります。
ユーザーが間違えてデータを書き換えてしまっても、即座にテーブルのデータが上書きされてしまうので、厳密なデータ管理が必要なシステムには向きません。
また、データが増えてくると、フォームを開く時に全部のレコードを読み込もうとするため、動作がすごく重くなってしまいます。
**非連結フォームのいいところ・気をつけるところ**
非連結フォームは、テキストボックスに入力しただけではテーブルに何も影響しません。
データをテーブルに保存したり、逆にテーブルからデータを取ってきて画面に表示したりするには、VBAというプログラミング言語を使って処理を書く必要があります。
手間がかかるし、プログラミングの知識も必要になるのがデメリットです。
でも、それを上回るメリットがあります。
間違ってデータを変更してしまうのを防げるのはもちろん、更新ボタンを押した時に「本当に登録しますか?」という確認メッセージを出すなど、細かい制御ができるようになります。
本格的な業務システムを作るなら、非連結フォームの活用は欠かせません。
**2つの違いをまとめると**
・**データの更新タイミング**:連結は入力したらすぐ保存される。
非連結はVBAで指定したタイミングだけ保存される
・**動作の速さ**:連結はデータが増えると遅くなりやすい。
非連結は必要なデータだけ扱うので軽快に動く
・**作る難しさ**:連結はプログラミング不要で簡単。
非連結はVBAの知識が必要
非連結フォームが活躍する3つの場面
非連結フォームは作るのに手間がかかりますが、本格的な業務システムを作る時にはとても役立ちます。
では、具体的にどんな場面で使われるのでしょうか?実務でよく使われる3つの代表的なパターンを紹介します。
**1. 検索画面での条件入力**
データベースから特定の顧客や商品を探す時、検索キーワードを入力するテキストボックスが必要ですよね。
もしこのテキストボックスがテーブルとつながっていたら、検索キーワードを入力した瞬間に既存のデータが書き換わってしまうという大事故が起こります。
だから、検索条件を入力するテキストボックスは必ず非連結にします。
入力されたキーワードを元に、VBAやマクロでSQLを組み立てて、必要なレコードだけを抽出して表示するのが基本的なやり方です。
**2. データ登録時の確認プロセス**
データを新しく登録したり更新したりする時、ユーザーの間違いを防ぐために確認メッセージを出したいことがあります。
連結フォームだとデータがリアルタイムで書き換わるので、「登録しますか?」と聞く前にテーブルが変更されてしまいます。
非連結フォームなら、ユーザーが画面で入力してもテーブルには影響ありません。
「登録」ボタンを押した時にVBAが動き出して、入力内容に漏れや間違いがないかチェックしてから、データベースに書き込むという安全な仕組みが作れます。
**3. ネットワーク環境での速度改善**
複数の人が同時にアクセスするシステムで、大きなテーブルとつながったフォームを開くと、ネットワークに負担がかかってシステム全体が遅くなります。
非連結フォームを使って、必要な時に必要な1件のデータだけをサーバーから取ってきてテキストボックスに表示する設計にすれば、ネットワークへの負担を最小限に抑えられます。
結果として、データが増えてもサクサク動く快適なシステムが実現できるんです。
非連結フォームを使うための具体的な方法
非連結フォームのメリットや使い方がわかったところで、実際にどうやって非連結テキストボックスとデータベースを連携させるのか、具体的な方法を説明します。
難易度や目的に応じていくつかの方法があるので、簡単なものから紹介していきますね。
**DLookup関数を使う簡単な方法**
VBAの深い知識がなくても使える方法として、「DLookup関数」があります。
DLookup関数は、指定したテーブルやクエリから、条件に合うデータを1件だけ取ってこれる便利な関数です。
たとえば、非連結テキストボックスのコントロールソースに直接DLookup関数を書いて、別のテキストボックスに入力された社員コードを条件にして、社員名を自動表示させるといった仕組みが簡単に作れます。
ただし、表示する項目が多かったり、データ件数が多い場合は処理が重くなりやすいので、小規模な参照用途に向いています。
**VBAを使った本格的な方法**
もっと本格的な業務システムを作って、非連結フォームからデータの追加や更新を自由にやりたい場合は、VBAの中で「ADO」や「DAO」という技術を使います。
ADOやDAOを使えば、プログラムから直接データベースに接続して、SQL文を実行してデータを取得したり、レコードセットという仮想的な表を操作したりできます。
取得したデータを非連結テキストボックスに1つずつ入れて画面に表示して、ユーザーが編集した後は、またVBAを使ってテーブルに安全に書き戻すという流れです。
最初はプログラムを書くのにハードルを感じるかもしれませんが、一度基本的な書き方を覚えてしまえば、いろんな画面に応用できるようになります。
入力エラーのチェックや、複数の人が同時に同じデータを編集できないようにする仕組み、処理が失敗した時にデータを元に戻す処理など、プロ仕様のシステムに必要な機能が組み込めるようになるのも大きな強みです。
まずは簡単な検索画面などから、非連結テキストボックスとVBAの連携に挑戦してみてください。
少しずつ慣れていけば、Accessの本当の力を引き出せるようになりますよ。
広告
