すべてのオプションのチェックボックスを備えた多対多のMS Accessフォーム
-
06-07-2019 - |
質問
サマーキャンプのMicrosoft Accessアプリケーションで、どのエンティティがどのアクティビティにサインアップしたかを追跡しています。エンティティの情報を編集するためのフォームがあります。そのフォームにすべてのアクティビティオプションのリストを追加したいと思います。各オプションでチェックボックスにする必要があります。オプションのチェックボックスをオンにすると、エンティティをアクティビティにリンクする多対多のジャンクションテーブルにエントリが存在するはずです。
Googleは、多対多のフォームを作成するいくつかの例を提供しましたが、チェックボックス付きのオプションの完全なリストを提供する方法を示すものはありませんでした(少なくとも私は見つけました)。
どうすればいいですか?
データベーステーブルのレイアウト: エンティティ(EntityID、名、姓など) アクティビティ(ActivityID、アクティビティ名) Entity_Activity(EntityID、ActivityID)
解決 2
これを行う1つの方法:
- アクティビティに新しいエントリを作成します 表。
- 手動で1つのチェックボックスを挿入する フォーム上のアクティビティごと。
- 登録 各チェックボックスにonClickハンドラー 適切な行を追加します チェックボックスがオンの場合のジャンクションテーブル チェックして適切なものを削除します チェックボックスが選択解除されたときに行。
フォームを手動でレイアウトする必要のないアプローチを望んでいました。この方法では、新しいアクティビティが追加されるたびに、フォームを変更する必要があります。まあ....
他のヒント
チェックボックスの代わりに、MS Accessでより自然に行う方法は、各エンティティがサインアップされているアクティビティのリスト(サブフォーム)を持つことです。アクティビティはプルダウンリスト(および場合によっては[追加]ボタン)から追加され、[削除]ボタンで削除されます。巧妙なクエリでは、そのリストを、エンティティがまだ持っていないアクティビティのみに制限します。
別の方法として、チェックボックスを使用することもできますが、テーブルレイアウトをわずかに変更する必要があります。 Entity_Activityには3番目のフィールド(SignedUp、yes / no)が必要です。その後、新しいエンティティを作成したときに、すべてのEntity_Activityの組み合わせを設定する必要があります。ただし、後で別のアクティビティを追加する必要がある場合は、既存のエンティティのすべてのエントリを更新するためにいくつかのフープを実行する必要があります。