【Access】Accessの連結フォームと非連結フォームの違いについて

スポンサーリンク

連結フォームとは

テーブルと連結されたフォームのことを連結フォームといいます。
見た目はフォーム(画面)ですが、イメージとしてはテーブルを開いて直接編集しています。

「連結フォームのメリット」は、使い勝手の良さになります。
マスタメンテ等、項目数やレコード数が少ないものを扱う画面に利用することが多いです。
連結フォームで値を変更すると、即テーブルに値が反映されます。

「連結フォームのデメリット」は、複数人で同時使用している時に重くなることです。
なぜ重くなるかというと、ロックが掛かるからです。
Aさんが連結フォームを開いて編集をしている時に、Bさんも開くとAさんが操作終了するまで
Bさんの画面が重くなりなかなか反映されないということがあります。
また、エラーになることも多く、利用人数が多くなり
複数の人が同時に1つの画面(テーブルデータ)を編集するのは、
テーブルに負荷を与え、Accessが破損しやすい要因にもなるので注意が必要です。

しかし、割と連結フォームで作成されている画面は多いです。

非連結フォームとは

非連結フォームとは、Access独自の連結フォーム機能ではなく
一般的なVBと同じように、表示時にはSQLを発行して
各テキストに取得した値をセットする処理を入れる必要があります。
当然、登録時と更新時にSQLを発行して更新する必要もあります。

「非連結フォームのメリット」は、何よりも汎用性の高さです。
入力した時に即、テーブルに反映するのではなく
全部入力して更新ボタン押下で入力チェックしてOKなら更新したい等に使います。
複数人での同時使用に適しています。
トランザクション制御は複数テーブルを一気に更新して最後にコミットも可能です。

「非連結フォームのデメリット」は、VBAを駆使しなければならず、やや敷居が高いです。
コントロール1つ1つに名前を付けないといけないので面倒
insert , update, delete selectすべてVBAに記述しなくてはいけないので少し大変です。

連結フォームを非連結フォームに変換するのは大変

連結フォームを非連結フォームに変換するのは非常に大変な作業が必要となります。
まず、非連結フォームの場合、各テキストに名前を付け、つけた名前をVBAで使用します。
コントロールソースを1つ1つ外していきます。
表示・追加・更新・削除すべてSQLが必要になります。

ということでかなり作りこんだ画面であればあるほど修正が大変になります。

まとめ

既に作成されたAccessの修正の場合、連結フォームだったらそのまま修正することが多いです。
連結フォームを非連結フォームに替えるという事は
依頼されなければできないくらい大掛かりな修正になります。
なぜならば、すべて作り直しという意味合いになるからです。
修正依頼の内容が作り直しであれば良いですが、一部修正という依頼であれば
全部作り直す必要性も意味も何もなくなるからです。
連結フォームは上手く使えばメリットもありますが、用途により考慮が必要となります。

新規に作成する場合、マスタメンテなら連結フォーム
それ以外のトラン系入力であれば非連結フォームを使用しています。

Accessでシステムを作成するとき、連結フォームとマクロとクエリだけでも
それっぽいシステムは作成できます。しかし検索時に曖昧検索をしたいや複合検索をしたい場合等
VBAを使わないと細かい作業ができない事も多々とあります。
そういう細かい修正依頼は、自分で調べるよりもプロに依頼するほうが早いと思います。

2022/9/19追記

今現在は、マスタメンテ画面でも非連結フォームは使用しなくなりました。
非連結フォームを使用する時は、ワークテーブル(wk_XXXX)を作成しておいて
そこに入力用データをdelete~insertして自由に入力してもらう際に使います。
帳票フォームやレポートなどで応用します。
登録時にこのワークテーブルから本当のテーブルにデータをupdate or insertします。
ここの処理がかなり面倒です。

コメント

タイトルとURLをコピーしました