Translate

ACCESSのフォームで、ヘッダーと明細フォーム(サブフォーム)をVBA無しで紐づける方法

ACCESSビギナー向け・フォーム、サブフォームの紐づけ方法




ACCESSでフォームのヘッダーと明細を紐づける方法

データーベース初心者がACCESSの操作に慣れ始めたころ、次に直面するのが、複数のテーブルを使って、フォーム内でデータを紐づける方法になるだろう

VBAプログラムのSQLで全解決する方法もあるけれど、折角アクセスを使っているので、ACCESSの機能で紐づける方法を説明

下記のような売上ヘッダーテーブル、明細テーブルがある前提で説明。


  • 売上ヘッダー 
  • 売上明細


売上ヘッダーと明細は、売上番号、種別で紐づけられる前提で、最初に作成するフォームは、ヘッダー側で、売上ヘッダーと紐づくフォームを用意する。


テキストボックスは、ヘッダーと、明細が紐づいている事が分かりやすいように、売上番号と割り当てておく。

もう一つフォーム作成の画面を開き、もう一つのフォームは、売上明細テーブルと紐づけし、フォーム名を売上明細として保存する。


それぞれのテキストボックスは、明細の中から表示したい内容を割り当てる事になるが、今回は、売上番号が連動している事を分かりやすくする為に、敢えて売上明細にも売上番号のテキストボックスを用意している。


また、売上明細の[既定のビュー]は、帳票フォームとしておいた方が、今回の売上入力画面で見やすい画面になるだろう。

次に、最初に作成したフォーム側で、サブフォームのコントロールを配置する。



サブフォームウィザードでは、テーブルからでも、フォームからでもどちらからでも紐づけしたい子のデータを選択しても良いが、今回は、売上明細を先に保存して作ったので、フォームから売上明細フォームを選択。


サブフォームのリンク親フィールド編集画面を表示し、親フィールドと子フィールドにそれぞれ、売上番号、種別と割り当てを行う。

すると、売上ヘッダーのフォームを一度閉じ、開きなおすと売上入力画面が表示され、最初のレコードは、売上番号1と、次のレコードボタンを押すと、売上番号2と紐づけられている事が確認出来る。


こうすれば、わざわざ、VBAでヘッダーと明細をデータを取得するSQLを作ってデータを取得して表示するとかしなくても、簡単に紐づけが可能である。

実際は、商品コード入れたら商品を検索する画面を表示したり、軽減税率か通常税率か選択させたり、細かい制御もほしくなるので、VBAでマクロを組むことが殆どだけれども、スピーディーに何かのシステムを用意したい場合、一旦プログラムレスで組んで提供しておいて、後から機能を足していくというやり方が、ACCESSでは可能である為、結果を早く出したい場合には、プログラムレスでやっていくのも、初期段階ではありだと思う。








このブログの人気の投稿

VBAのADOで「パラメーターが少なすぎます。xを指定してください。」と表示された場合の原因

ACCESSでバーコードスキャンしたら自動でイベントを起こす方法

PostgreSQL 11 でpg_dumpallを使ってバックアップしたデータをリストアするとき文字化けの対処法

ACCESSのVBAを実行するとACCESSが強制終了する事がある

VBSでマクロの実行時に警告を非表示にする方法

ACCESSのVBAでADOを利用したバインド変数を利用したデータベース連携方法

ACCESSでバーコードをスキャンして登録更新する簡単なサンプル

pgAdmin 4が遅いのは仕方がない | PostgreSQL things.

ACCESSのVBAでリストビュー(ListView)を使う為の設定 | Office365

ASP.NETのでクライアント証明書を使ったログイン認証を行う方法