0

私は、Access の経験者にとっておそらく単純であると思われるものに完全に困惑しています。私は Access (2010) を初めて使用し、多くのことを勉強していますが、残念ながら多くの基本的な概念にまだ混乱しています。以下の特定の問題を解決するために約 40 時間 (失敗) を費やしたことを認めるのは恥ずかしいことです。ここに十分な詳細が含まれていない場合はご容赦ください。これに対処するために誰かがどれだけ知る必要があるかわかりません。詳細情報を編集および/または提供させていただきます。

私の質問:

Table1 の 2 つのフィールドが Table2 の 1 つのフィールドとは異なる値を持つ、Table1 の新しいレコードを作成する/既存のレコードを編集するためのフォームを作成するにはどうすればよいですか? (以下に詳細があります)

Form に Table1 のすべてのレコードが含まれるようにします。クエリ、サブフォームなどでさまざまな方法を試しましたが、うまくいきません。この問題は、私が Table2 に対処する方法に関連していると確信しています。理想的には、ユーザーがフォームのドロップダウンから選択して、Table1 で更新される 2 つのフィールドを選択できるようにします。

意図したフォーム コンセプトのモックアップのスクリーンショット、現在持っているオブジェクト リレーションシップ、Table1 のデザイン ビューとデータシート ビュー、Table2 のデザイン ビューとデータシート ビューを含めます。

上の「Table1」は画像の「t_PEOPLE」ですが、「Table2」は「t_COLORS」です。</p>

オブジェクトの関係タイプは現在、強制的な参照整合性 (カスケード更新関連フィールド) を伴う 1 対多であり、結合プロパティは「't_PEOPLE' からのすべてのレコードと、結合されたフィールドが等しい 't_COLORS' からのレコードのみを含む」です。

もしよろしければ、実際のデータベース ファイルを送らせていただきます。

私はどんな指導にもとても感謝しています - ありがとう!!

モックアップ フォーム コンセプトのスクリーンショット オブジェクト関係のスクリーンショット t_PEOPLE データシート ビューのスクリーンショット t_PEOPLE デザイン ビューのスクリーンショット t_COLORS データシート ビューのスクリーンショット t_COLORS デザイン ビューのスクリーンショット

4

1 に答える 1

1

これに対する一般的なアプローチは次のとおりです。

A) あなたがここで何をしようとしているのか理解できれば、あなたの t_colors テーブルは通常、参照テーブルまたは参照テーブルと呼ばれます。この t_colors テーブルのレコードを追加、編集、および削除するには、1 つのフォームを作成する必要があります。ユーザーがそのフォームにアクセスする方法はさまざまです。すぐに説明します。

B) People テーブルのフォームには、2 つの色を選択するためのドロップダウン メニューが必要です。ドロップダウン メニューの RowSource では、t_colors テーブルの値を検索するクエリを使用します。

C) t_people で色を使用する目的に応じて、PeopleID と ColorID を含む 3 番目のテーブルを作成することを検討する必要があります。次に、t_people と t_colors の両方にリンクします。これにより、1 人の人物に複数の色を指定することができ、2 つに限定されなくなります。People フォームでは、これらの色のサブフォームを使用します。サブフォームは、おそらくデータシート フォームまたは連続フォームである必要があります。People フォームにデータシート フォームを使用している場合は、colors サブフォームにデータシート フォームを使用する必要があります。

ユーザーが t_colors テーブルにまだない色を使用したい場合は、その色を挿入する方法をユーザーに提供する必要があります。これにはさまざまなアプローチがあります。"" オプションを表示するドロップダウン RowSource でユニオン クエリを使用できます。選択すると、Colors フォームが表示され、Colors フォームを閉じるときに、ドロップダウン メニューを再クエリする必要があります。または、「リストにない」(コンボボックスが持つイベント) の値を入力するときに、VBA を使用して色を挿入することもできます。

この場合、定義した関係はあまり役に立たないか、重要ではないことに注意してください。はい、カスケードの更新またはカスケードの削除機能を使用する際に役立ちます。しかし、正直なところ、リレーションシップは基本的にプログラマ向けであり、参照整合性に違反した場合にエラーが発生するようにするためのものです。ユーザーにこれらのエラーが表示されることはありません。適切に設計されたフォームは、エラーの発生を防ぎます。それらを使用する主な理由は、うまくいけばプロジェクトの独自のテスト段階で、何かが間違っているときにエラーを与えることによって、フォームを適切に設計することを強制することです。

于 2013-10-12T20:51:38.710 に答える