1

テーブル内でルックアップを使用しないことについて、ここでさまざまな投稿を見てきました。そうでない場合、フィールドとルックアップ テーブルの許容値との間の参照整合性をどのように強制しますか? フィールドに一意の (重複のない) インデックスを作成できないため、テーブル フィールドとルックアップ テーブルのフィールドの間にリレーションシップを作成できません。特定の値は、テーブル内のレコード全体で複数回表示される必要があります。しかし、フィールド プロパティを使用してルックアップを設定し、そこに含まれる必要があるルックアップ テーブルからフィールドを指定すると、ルックアップ テーブルにないこのフィールドにデータを入力できないことが保証されます。

それとも、ここでスティックの端を完全に間違っていますか?

4

1 に答える 1

1

レコードを編集するためのフォームを常に作成することをお勧めします。これらのフォームでは、正しいテーブルとフィールドでルックアップを実行するコンボ ボックスを作成できます。テーブルに保存されている値のみにデータ入力を制限できるオプションがあります。このオプションは Limit To List と呼ばれます (コンボ プロパティに表示されます)。

ルックアップ テーブルにデータが存在することを強制するもう 1 つの重要な方法は、リレーションシップを使用することです。

tblProducts
  ProductID (primary key)
  CategoryID (foreign key)
  ProductDescription

tblCategories
  CategoryID (primary key)
  Category

リレーションシップ ウィンドウで、上の 2 つのテーブル間のリレーションシップを CategoryID フィールドで定義します。ここでいくつかのことを達成しています。保存するデータが少なくなるため、Products テーブルに CategoryID のみを保存する方が効率的です。また、この方法でカテゴリの名前を変更すると、すべてのレコードにその変更がすぐに反映されます。カテゴリとともに製品を表示するすべての場所で、カテゴリ ID を表示するのではなく、カテゴリの説明を表示するようにコンボ ボックスを作成する必要があります。

補足として、値リスト オプションをコンボの値集合ソース タイプとして使用することはめったにないことをお勧めします。[テーブル/クエリ] オプションを使用して適切なルックアップ テーブルを作成すると、より堅牢で柔軟な設計になります。

于 2012-05-04T11:46:13.133 に答える