Accessのフォーム(画面)には、連結フォームと非連結フォームというのがあります。
連結フォームと非連結フォームの違いは、テーブルと連結しているか否かという事を意味しています。
連結フォームにするとテーブルを直接操作することになります。
メリットは、作りやすいし入門書にも連結フォームのやり方がメインに書いてあると思います。
デメリットは、複数人で動かすとエラーになりやすいこと、重くなることがあげられます。
最初はお試しで手軽な連結フォームで作成したけれど、いろいろ作りこんで重くなってからだと
改修(作り直し)するのもかなり大変になるので、ここは注意が必要です。
一方で、どういう時に連結フォームを使うのかというと
マスタメンテ画面など簡易的で複数人が同時に使用したり頻繁にデータを変更しないような
画面は、連結フォームで作成するのも手です。
直接テーブルを操作するよりも連結フォームでテーブル操作するほうが手軽だし
何よりもメニューから起動できるので見た目にも良いからです。
1. マスタテーブルを作成
2. ウィザードを使用して連結フォームを作成
顧客マスタテーブルを作成
テーブル名:m_kokyaku
kokyak_id
kaisha_nm
yubin_no
address_1
address_2
tel
fax
tanto_cd
nyukin_type
nyukinbi
テーブルを作成します
連結フォームを作成
(1)作成>フォームウィザード
(2)使用するテーブルと項目を選択
m_kokyakuテーブルを選択します。
(3)レイアウト選択
単票形式(デフォルト)選択
(4)フォーム名
「F_顧客マスタ」にする
※フォーム名は何でも良いです
(5)顧客マスタ
ウィザードで作成するとこんな感じになります。
これをいろいろ加工していくと下記のようになります。
そのまま使うのではなく必要に応じて加工するのが良いと思います。
■入金タイプ
入金タイプはコンボボックスにします。
■入金日
入金日は日付なので1~31の入力制限をいれます。
VBAコード
連結フォームでも必要なチェックはしたい場合があると思います。
入力途中でテーブルデータが更新されたり追加されないよう
かならず入力させたい項目(必須項目)が全部終わらないと登録しないように制御するには
やはりVBAコードが必要となります。
下記はフォームの挿入前イベントです。
顧客IDが未入力の場合、自動採番するような仕組みにしています
Private Sub Form_BeforeInsert(Cancel As Integer) If Nz(Me.txt顧客ID.Value) = "" Then Me.txt顧客ID.Value = funSaiban_KokyakID End If End Sub
次はフォームの更新前イベントです。
入力チェック関数をCALLしてfalse(エラー)なら更新キャンセルします。
Private Sub Form_BeforeUpdate(Cancel As Integer) ' 入力チェック If funCheckInput = False Then Cancel = True Exit Sub End If End Sub
連結フォームでも工夫をすれば問題なく操作はできます。
コメント