伝統的な意味での古典的な意味では、2つのテーブル間に多対多の関係があるということは実際にはありませんが、関連するテーブルを次々に組み合わせることで、1日の終わりに同じ結果が得られます。多対多の関係ですが、技術的には、2つのテーブル間で発生することではありません。実際には、常に親テーブルから子テーブルに向かって作業を進めています。ジャンクションテーブルの観点から考えている人は、実際には間違った方法で考えています。
人が多くの好きな色を持つことを許可されている場合、色の多くの選択肢を単に「ジャンクション」テーブルとして利用可能な色にリンクするそのテーブルを呼び出すのは味が悪いです。次のようなテーブルが必要であると単純に述べる方がはるかに優れています。
My List Of Favorite colors table.
上記のテーブルが追加のテーブルにリンクする可能性があるという事実は重要ではありません。実際には、外部キーである複数の列が含まれている可能性があり、実際には単純なジャンクションテーブルではありませんが、その日は同じことを行っています。
とにかく、Accessでは、この方法でモデル化されたデータを表示するために、2つの継続フォームを確実に表示できます。
毎週末、人々からたくさんの寄付を受け取らなければならないと仮定しましょう。これは、この寄付イベントの日時などに関する情報を含むメインテーブルが1つあることを意味します。次のテーブルには、人とその寄付額が表示されます。その後の次の表は、寄付金額を受け取り、資金を別の口座に分割することです。これは古典的な会計配分の問題であり、QuickBooksからいつでも実装する必要のあるほぼすべての会計パッケージです。結局のところ、この古典的な配布の問題は、アクセスを使用するときに非常に少ないコードで解決できます。
これらのタイプのフォームをモデル化する秘訣は、1つのメインフォームに配置された複数のサブフォームを使用することです。
次のフォームはこれを示しています。
上部を見ると、このバッチ実行と日時に関する情報を含むメインレコードがあります。さて、左側にはたくさんの人と寄付金があります。そして右側には、一人への寄付が多くの異なるアカウントに分割されていることがあります。ですから、私は多くの人を表示しています。また、寄付が分割される可能性のある多くのアカウントも表示しています。
アクセスでは、連続サブフォームを連続サブフォーム内に配置できないことに注意してください。ただし、上記のスクリーンショットが示すように、2つの連続したフォームを並べて配置して、希望する同じ効果をモデル化することはできます。
驚くべきことに、前述のように、このすべてを管理するためのコードはほとんどありません。
左側の連続フォームの場合、リンクマスターと子の設定がメインフォームレコードに設定されているため、このフォームにデータを入力するためのコードは必要ありません。ただし、右側のフォームが続き、左側の連続フォームに各個人の正しい会計データが表示されるため、アクセスによって自動的にこれが行われることはありません。ただし、左側のフォームのon-currentイベントの簡単なコードにより、アクセスが強制的にウェイクアップし、右側のフォームを再入力して、その特定の人の寄付アカウントを表示する必要があることに注意してください。
左側のon-currentイベントに配置された1行のコードは、これを修正します。
me.Parent.Child2.Requery
私が使用する右側の連続フォームのリンクマスター/子設定:
linkChildFields main_id(親テーブルに関連付けるために使用されるこのサブフォームのフィールドの名前)LinkMasterFields [MasterFormLeftSide]。[form]。[ID]( "masterFormleft"は、あなたを制御するサブフォームの名前です。左側の連続フォームを保持するために使用されます)。
したがって、ほんの少しのコードが必要になりますが、それほど多くは必要ありません。これで、多くの情報に関連する多くの情報を表示する画面ができました。