0

MS Access 2010には、2つのサブフォームを含むフォームがあります。フォームの背後にあるテーブルと1対1の関係を定義しました。両方のサブフォームを使用して、対応するテーブルにレコードを作成してから、親フォームの外部キーを更新する必要があります。しかし、最初にサブフォームに入力すると、対応するテーブルにエントリが作成されますが、外部キーは更新されません。これは自動的に行われるべきではありませんか?または、親フォームのフィールドを更新するためのコードを追加する必要がありますか?

また、最初にメインフォームに入力し始めてから、サブフォームのいずれかにジャンプすると、次のエラーメッセージが表示されます。
「'Activations.dbBoxID'フィールドに値を入力する必要があります」(ここではアクティベーションがメインフォームであり、 dbBoxIDは外部キーフィールドです。)

もう1つの問題は、メインテーブルのエントリも作成されるまで(つまり、メインフォームのすべての必須フィールドも入力されるまで)、サブフォームが対応するテーブルを更新したくないということです。

私はMSAccessを初めて使用します。どんな助けでも本当にありがたいです!

4

2 に答える 2

2

ここで欠落している概念、および説明されていないのは、アクセスでマスターから子への関係を構築する場合、フォームとサブフォームを使用してこれらの関係をモデル化できますが、フォームは実際のテーブルではなくベースにするということです。これらのテーブルを結合した結果であるクエリ。

つまり、マスター フォームは、メイン テーブルまたは親テーブルに基づく必要があります。子テーブルに参加しないでください。これをもう一度繰り返します。子テーブルに参加しないでください。

そのため、クエリに基づいてマスター フォームまたはメイン フォームを作成できますが、その場合、そのクエリの子テーブルに結合しないでください。実際、ほとんどの場合、クエリに基づいてフォームを使用することには何の利点もありません。フォームを作成し、テーブルに基づいて作成するだけです。

子フォームにも同じアドバイスが適用されます。子テーブルに基づいて子フォームを作成します。結合でクエリを使用しないでください。

エラー メッセージが表示される理由は、2 つのテーブルに基づくメイン フォームのクエリがあるためです。関連付けが強制されている場合、フォーカスがメイン フォームから子フォームに切り替わると、メイン フォームのレコードが保存されるため、エラー メッセージが表示されます。

したがって、エラーと問題は、この場合は必要ないときに、2 つのテーブルの結合であるクエリに基づいてフォームを作成したことが原因です。

于 2010-11-28T01:34:22.037 に答える
0

親フォームのデータを最初に入力すると、サブフォームを含むフォームの方がうまく機能します。次に、サブフォームをコードなしで各テーブルのparent_keyからforeign_keyに結合できます。

ユーザーが最初にサブフォームにレコードを入力できるようにする場合は、親フォームが完成/保存されるまでレコードを更新しないでください。コーディングを行う必要があります。なぜあなたがそれをする必要がある/したいのか分かりませんか?

請求書と支払いのサブフォームを含むクライアントフォーム。たとえば、レコードを作成するのに十分なクライアントデータを入力します。次に、請求書や支払いを入力できます。

于 2010-11-27T21:37:19.523 に答える