■ 直前に入力したデータを新規登録するレコードに継承する (2000,2002,2003,2007)
|
|
→ |
|
図 直前に入力した都道府県を新規登録するレコードに継承
直前に入力した得意先データを新規登録する得意先に継承してデータ入力の負荷を軽減します。このフォームでは、得意先データの得意先名と都道府県を継承することができます。
フォームに得意先データを入力したら、新規登録するレコードに継承するフィールドにチェックマークを付けます。レコードの新規登録ボタン
をクリックすると、チェックマークが付いているフィールドが継承されます。
1. 新規データベース作成
Accessを起動したら、ツールバーから新規作成のアイコン
をクリックして、作業フォルダworkにW095.mdbを作成します。
2. テーブル、クエリ、モジュールをインポート
Windowsのエクスプローラから、095.mdb(このページの最後からダウンロードできます)をダブルクリックして開きます。データベースウィンドウのオブジェクトから[テーブル]をクリックしたら、得意先テーブル(tblCustomers)をドラッグしてW095.mdbのデータベースウィンドウにドロップします。同様の手順で、クエリ(qryCustomers)とモジュール(basCarry)をドラッグ&ドロップします。テーブル、クエリ、モジュールをインポートしたら、095.mdbを閉じます。
3. 新規フォーム作成
データベースウィンドウのオブジェクトから[フォーム]を選択したら、[新規作成]ボタンをクリックします。「新しいフォーム」のダイアログが表示されたらリストボックスから[オートフォーム:単票形式]を選択します。基になるテーブルまたはクエリの選択から[qryCustomers]を選択します。[OK]ボタンをクリックしてダイアログを閉じます。フォームが自動生成されたら、ツールバーからデザインビューのアイコン
をクリックして、デザインビューに切り替えます。
4. チェックボックス作成
ツールボックスからチェックボックスのアイコン
をクリックしたら、フォームの得意先名のテキストボックスの右にドラッグします。チェックボックスのラベルを選択して削除します。同様の手順で、都道府県のテキストボックスの右側にチェックボックスを作成したらラベルを削除します。チェックボックスをダブルクリックしてプロパティウィンドウを表示したら、表のようにプロパティを設定します。更新後処理イベントに設定するfsCarryFieldValue()関数は、モジュールbasCarryに登録されています。

図 得意先名と都道府県の右側にチェックボックス作成
表 フォームに作成したコントロールのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
チェックボックス1 |
名前 |
chkCompanyName |
|
更新後処理 |
=fsCarryFieldValue([Form],Screen.ActiveControl) |
|
|
チェックボックス2 |
名前 |
chkKen |
|
更新後処理 |
=fsCarryFieldValue([Form],Screen.ActiveControl) |
Note
|
チェックボックスの名前は”chk” +”テキストボックスの名前”にする チェックボックスの名前は、「chk+テキストボックスの名前」にします。たとえば、得意先名(CompanyName)のチェックボックスの名前は、「chkCompanyName」にします。 |
5. フォームを開く
Accessのツールバーからフォームビューのアイコン
をクリックしてフォームを開きます。レコード移動ボタンから
をクリックして最終レコードに移動します。都道府県のチェックボックスをクリックして、都道府県を新規レコードに継承するようにします。新規登録ボタン
をクリックすると空きレコードが表示されます。都道府県には、直前に表示されていた「茨城県」が継承されます。

図 直前に表示されていた「茨城県」が新規登録されるレコードに継承される
●解説
直前に入力/表示されているデータを新規登録するレコードに継承するには、テキストボックスの既定値/DefaultValueプロパティに継承する値を設定します。新規登録ボタンをクリックすると、空きレコードが表示されますが、DefaultValueが設定されているときは既定値としてこの値が表示されます。
このサンプルでは、チェックボックスの更新処理/OnAfterUpdateイベントで、テキストボックスのDefaultValueを設定しています。OnAfterUpdateイベントは、チェックボックスをクリックしたときに発生します。このイベントでは、fsCarryFieldValue()関数を呼びます。この関数には、引数としてフォームとチェックボックスのコントロールを渡します。fsCarryFieldValue関数は、モジュールbasCarryに登録されています。
チェックボックスのOnAfterUpdateイベント:
=fsCarryFieldValue([Form],Screen.ActiveControl)
fsCarryFieldValue関数は、チェックボックスにチェックマークが付いているとき、テキストボックスの値をDefaultValueに設定します。チェックマークが付いていないときは、DefaultValueを元の状態に復元します。
Public Function fsCarryFieldValue( _
frm As Form, chk As CheckBox) As Boolean
Dim txt As TextBox
Dim strName As String
Const conQuote As String = """"
On Error Resume Next
strName = Mid(chk.Name, 4) ' テキストボックスのコントロール名取得
Set txt = frm(strName)
If chk.Value Then
chk.Tag = txt.DefaultValue ‘ テキストボックスの既定値をTagに保存
txt.DefaultValue = conQuote & txt.Value & conQuote ‘ 既定値を設定
Else
txt.DefaultValue = chk.Tag ‘ 既定値を復元
End If
fsCarryFieldValue = True
End Function