MS Access Tips/Sample and VBA and Blog customize etc...

連結入力フォームのレイアウトを自由に設計したい

複数レコードのデータを入力するとき、帳票フォームを使いますが、これは縦にしか並べることができません。

しかし、見やすさや、紙での入力のフォーマットに合わせたいとかで、横に並べたり、段組みで並べたいというようなことはよくありますね。

例えば、下図のようなレイアウトをしようと思うと、非連結フォームでコントロールを複数並べて、テーブルから読み込み、テーブルへの書き込みをVBAなどですべて自前で処理を構築する必要があるように思えます。

が、サブフォームをうまく使えば連結にできてレイアウトも自由にできるので、コードなしでも下図のようなレイアウトが実現できます。

連結で自由にレイアウト

難易度:

チーム編成表

下記のようなテーブルがあるとします。

T_チーム
チームIDチーム名
1A
2B
3C
4D
5E
6G
T_メンバー
メンバーID氏名ニックネーム性別
1山田ドカベン
2山崎やーま
3田中たなか
4竹田たけやん
5加藤かとちゃん
6鈴木すーちゃん
T_チームメンバー
チームIDSubIDメンバーID
111
122
13
21
22
234
616
62
63

「チームメンバー」と「基本」からクエリを作成して番号で結合します。結合線をだプルクリックして「チームメンバーのすべてのレコードと・・・」のオプションを選択します。クエリ名「Q_チームメンバー」として保存します。

このクエリをレコードソースとする帳票フォームを作成します。「追加の許可」「削除の許可」はいいえにしておきます。名前はF_チームメンバー。

さらに別に非連結のフォームを作成します。このフォーム上に、上記の帳票フォームをサブフォームして配置します。サブフォームの高さは3行分にします。サブフォームに付加されたラベルの標題を「チームA」とします。

このサブフォームをコピーして、5回貼り付けます。全部で6このサブフォームが配置されることになります。このサブフォームを3列のレイアウトになるように移動します。ラベルの標題は、チームA、チームB、・・・チームF とします。

テキストボックスを6つ配置して下記のように設定します。

名前 txtチームA
コントロールソース =1
可視 いいえ

名前 txtチームB
コントロールソース =2
可視 いいえ

・・・
(略)
・・・

名前 txtチームF
コントロールソース =6
可視 いいえ

各サブフォームコントロールのリンクフィールドの設定を下記のようにします。

リンク親フィールド txtチームA
リンク子フィールド チームコード

リンク親フィールド txtチームB
リンク子フィールド チームコード

・・・
(略)
・・・
リンク親フィールド txtチームF
リンク子フィールド チームコード

デザインビューでは下記のようになります。

チーム編成表デザインビュー

解説

サブフォームコントロールは6個配置していますが、ソースオプジェクトのフォームは一つだけです。同じフォームを各サブフォームコントロールで共有しています。デザインビューではサブフォームは一つだけしか表示されませんが、フォームビューにすれば6個のサブフォームが表示されます。

各サブフォームコントロールのリンクフィールドの設定で、メインフォームのテキストボックスとリンクさせることで、各チームのデータを抽出するように設定してあります。

このように一つのサブフォームを複数のサブフォームコントロールで共有することで、レイアウトを自由に設計することができます。サブフォーム自体は連結なのでテーブルデータの読み込み、書きこみはAccessがやってくれますのでコードは必要ありません。

また、サブフォーム自体は一つだけなので、デザインの修正も楽です。

勤務予定表(シフト表)

上記の同じ考え方で勤務予定表のサンプルを作成しました。

1日分の予定を表示するフォームをサブフォームとして7個配置して1週間分の予定を一覧表示して、入力・編集できるようになってます。

メインフォームのテキストボックスの日付を変更することで表示することで、サブフォームに表示するデータも変更できます。

日付変更時に、サブフォームのデータがないときはVBAで自動で追加するようにしています。

詳しく解説すると長くなるのでサンプルファイルで内容を確認ください。

勤務予定表

サンプルファイルが下記からダウンロードできます。
FrmMultiSubFormLayout_07.zip (Access 2007-2010 形式 - 37kb)
FrmMultiSubFormLayout.zip (Access 2002-2003 形式 - 33kb)
FrmMultiSubFormLayout_2k.zip (Access 2000 形式 - 33kb)


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/395-54ea16bd
該当の記事は見つかりませんでした。