2010-11-27 11 views
0

MS Access 2010に2つのサブフォームがあるフォームがあります。私はフォームの背後にあるテーブルと一対一の関係を定義しました。両方のサブフォームを使用して対応するテーブルにレコードを作成し、親フォームの外部キーを更新する必要があります。しかし、最初にサブフォームを埋めると、対応するテーブルにエントリが作成されますが、外部キーは更新されません。これは自動的に起こらないはずですか?または、親フォームのフィールドを更新するコードを追加する必要がありますか?サブフォームの統合がMs Access 2010でシームレスに機能しない

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

もう1つの問題は、メインテーブルのエントリも作成されるまで、サブフォームが対応するテーブルを更新しないようにすることです。メインフォームも入力されます)。

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

+0

あなたのフォームは上下が逆です。外部キーを格納するテーブルはCHILDテーブルで、FKの値が親フォームとして描画されるテーブルを持つサブフォームに存在する必要があります。それがLinkChild/LinkMasterプロパティが動作する唯一の方法です。 –

+0

意味があります。私はサブフォームと親の関係がこのように動作することは知らなかった。私はすぐにサンプルデータベースを書いて、完璧に機能しました。 Davidに感謝します! – Prashant

答えて

0

親フォームのデータが最初に入力された場合、サブフォームのあるフォームがうまく機能します。次に、サブフォームは、コードなしで各テーブルのparent_key to foreign_keyに結合できます。

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

請求書と支払いのサブフォームを持つクライアントフォーム。たとえば、レコードを作成するのに十分なクライアントデータを入力します。次に、請求書および/または支払いを入力することができる。

+0

意味があります。私はフォーム階層を変更して、今はすべてうまく動作します:)。ありがとう! – Prashant

2

あなたがここで紛失していることと、あなたに説明されていないことは、アクセスのマスターと子の関係を構築するときにフォームとサブフォームでこれらの関係をモデル化できます。実際の表であり、これらの表を一緒に結合した結果の照会ではありません。

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

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

SAME ADVICEは子フォームに適用されます。子フォームを子テーブルの基にします。結合でクエリを使用しないでください。

エラーメッセージが表示される理由は、2つのテーブルに基づいたメインフォームのクエリがあるためです。強制的な関係でフォーカスがメインフォームから子フォームに切り替わると、メインフォームのレコードセーブが発生し、エラーメッセージが表示されます。

この場合、2つのテーブルを必要としない場合は、2つのテーブルを結合したクエリをフォームに基づいているため、エラーと問題が発生します。

+0

私は実際のテーブルのサブフォームに基づいていますが、クエリーではありませんが、メインフォームは外部キーを持つテーブルに基づいていました。ダビデが言ったように、私の形は逆さまです。フォームを入れ替えて問題を解決しました。ありがとう! – Prashant

関連する問題