前回までにフォームの基本的な作成方法について紹介してきました。
今回は、テーブル構造を考慮したサブフォームの作成方法とメインフォームとのリンク方法について説明をします。
テーブル構成のおさらい
まずは、図1を見てみましょう。テーブル構成として、これまでにT_購買伝票テーブルとT_購買伝票内訳テーブルを作成してきました。そして、T_購買伝票テーブル中レコードは1件につきT_購買伝票内訳テーブルのレコードは複数(無限)作成可能となるリレーションシップを設定しました。
T_購買伝票テーブル中の各フィールドは前回作成したフォームとリンクしますが、一方でT_購買伝票テーブルに係るフィールドまで同一フォームで入力できるようにしようとすると、勝手が悪くなってしまいます。つまり、T_購買伝票テーブル側のデータを何回も入力する必要が出てきます。これは、Accessで作る購買伝票について その4 テーブル構成 で紹介したデータ入力に係る効率の向上及びデータ整合性を担保する方法として説明した内容と同様のことが言えます。
そこで、T_購買伝票内訳テーブルに相当する入力フォームは、第10回で作成したフォーム(以降、「メインフォーム」と呼び、フォーム名は「F_メインフォーム」とします。)とは別に作成し、これを「サブフォーム」(フォーム名は「F_サブフォーム」とします。)として取り扱います。
それでは、サブフォームの作成に移っていきましょう。
サブフォームの作成
フォームの作成方法は前回と同様のため、ポイントだけを説明します。
詳しくは、Accessで作る購買伝票について その10 フォームの設定 を参考にしてください。
次に、サブフォームでは複数のレコードを表示できるように既定のビューを設定します。
まず、図3に示すフォームの形式を見てみましょう。フォームの形式で主だったものに、「単票フォーム」と「帳票フォーム」があります。
単票フォームの場合は、1レコードずつを表示するのに対し、帳票フォームでは表形式で該当レコードを表示します。
そこで、複数のレコードを表形式として出力できるように、サブフォームでは帳票フォームを設定します。
プロパティシートに「既定のビュー」プロパティがあるため、これを「帳票フォーム」にしてください。
帳票フォームでは、繰り返しのレコードを詳細セクションに表示します。一方で、レコードのラベルはフォームヘッダーに設定します。この際、詳細セクションではレコードの分だけ繰り返し画面に表示されるため、セクションの高さを調整する必要があります。また、フォームフッターは今回は使いませんので非表示にします。
セクションの高さ設定
各セクション高さの設定は、各セクション下部の境界にマウスカーソルを合わせると、アイコンが変わるため、左クリックしながらドラッグすることで変更できます。
さて、これでT_購買伝票内訳テーブルの各フィールドを配置する準備ができました。
繰り返しますが、レコードを表示する部分は詳細セクションに、ラベルはヘッダーセクションに配置します。これを前提に設定をしていきます。
コントロールオブジェクトの設定方法
今回は 、手動で各種オブジェクトを設定していきます。そのため、自動でコントロール設定をするウィザード機能を使用しませんので、各オブジェクトを配置する前に、次の操作をします。
まず、フォームデザインツール「デザイン」タブ中の垂直タブをクリックすると、「コントロールウィザードの使用」の項目がありますので、このチェックを外してください。
ウィザードに従って操作をすれば簡単にコントロールの設定をすることができますが、基本設定を理解しないまま使用することは、いざというときにトラブルの原因となりますので、今回は基本的な操作を説明することを目的として、若干回りくどい方法で操作の説明をします。
コントロールウィザードとは、各オブジェクトの動作や名称を手順に沿って設定するためのAccess特有の機能。
ウィザードのチェックを外したら、ヘッダーセクションと詳細セクションに各オブジェクトを配置していきます。
先ほど示した「デザイン」タブにはテキストボックスアイコンがあるため、これを左クリックし、詳細セクションにて左クリックにより範囲を指定してテキストボックスをセットしてください。
これで詳細セクションにはラベルオブジェクトとテキストオブジェクトが配置されますが、ラベルオブジェクトはヘッダーセクションに配置するため、ここでは削除します。
また、各オブジェクトは識別ができるように名前を付けます。今回配置したテキストボックスには「t_管理番号」と名付けます。名前の設定方法は、対象のオブジェクトを左クリックしてアクティブ状態にし、プロパティシート中の名前プロティに名称を入力します。
「t_管理番号」テキストボックスは、T_購買伝票内訳テーブルの「管理番号」フィールドを表示するためのものなので、コントロールソースプロパティには「管理番号」と入力します。
以上の操作と同様に、T_購買伝票内訳テーブル中のフィールドに対応するテキストボックスとして、「t_購買品目」と「t_購買数量」を作成します。名称が示すとおり、それぞれは「購買品目」と「購買数量」フィールドに対応します。また、「購買品目」フィールドにはT_商品マスタのレコードとリンクを設定しますので、テキストボックスを設置後にコンボボックスへ変更をしてください。さらに、「t_購買品目」コンボボックスでは「T_商品マスタ」テーブルを参照できるように、値集合ソースプロパティに「T_商品マスタ」を設定し、また、列数プロパティは「2」、列幅プロパティは「0cm; 3.8cm」に設定してください。
(これら設定方法は、Accessで作る購買伝票について その9 フォームの作成 を参照ください。)
次に、フォームヘッダーにラベルオブジェクトを配置します。
各ラベルオブジェクトを配置後、標題プロパティに各名称を入力します。また、フォントの色を黒色にして見やすくします。
以上で、サブフォームを作成することができました。
メインフォームとサブフォームの連携方法
メインフォームとのリンクをかけるために、改めてF_メインフォームをデザインビューで開きます。そして作成したF_サブフォームをF_メインフォーム中にはめ込むことで、入力フォームを一体化します。
フォームデザインツール中「デザイン」タブのサブフォーム/サブレポートアイコンをクリックし、詳細セクションに配置をします。配置後、サブフォームオブジェクトを識別できるように、名前プロパティは「サブフォーム」とリネームします。また、この際にラベルオブジェクトも生成されますが、不要なので削除します。
これで、F_メインフォームにサブフォームの領域を確保しました。しかしながら、この状態ではサブフォームの領域にF_サブフォームを参照する設定がされていません。また、メインフォームとサブフォームでのリンクがかかっていません。そこで、これらの設定をしていきます。
サブフォームのオブジェクトを左クリックしてアクティブ状態にし、ソースオブジェクトプロパティには「F_サブフォーム」と、リンク親フィールドプロパティには「F_メインフォーム」側の「管理番号」を、リンク子フィールドプロパティには「F_サブフォーム」側の「管理番号」をそれぞれ設定します。
これで、全ての設定が完了しました。画面左上の「表示」アイコンをクリックしフォームビューに切り替えましょう。図13に実際の表示画面を示しています。
このようにして、メインフォームとサブフォームの関係は、T_購買伝票テーブルとT_購買伝票内訳テーブルに相当するものです。
そして、各テキストボックスに入力をすることで、データを登録ができますがドロップダウンでの入力が可能なため、Excel等を利用した場合と比較するとかなりの手間が省け、業務効率の改善を図ることが期待できます。
まとめ
サブフォームの作成、各種オブジェクトの設定方法を紹介し、メインフォームとサブフォームのリンク方法までを実践しました。これにより、データ入力画面が出来上がったわけですが、データの入力に際してはドロップダウンを利用することができ、入力の手間が省けるようになったと思います。したがって、業務効率の改善が図れたわけですが、実際の入力方法については次回に紹介したいと思います。
スポンサーリンク
コメント