私はこれを正しく読んでいる場合、あなたは、フォームの主要部分として、メインの親テーブルを持って言っている、とあなたはあなたの周りにナビゲートする子レコードがサブフォームに表示したいです。アクセスはデフォルトでこのように動作し、コードを書く必要はありません。
さらに、子フォームをサブフォームに追加すると、外部キー値が正しく設定されます。再度コードは必要ありません。
したがって、メインの親テーブルに基づいて標準フォームを作成します。次に、子フォームのテーブルに基づいて連続フォームを作成し、それを上記のメインフォームにドロップすることができます。
あなたは、desingモードでメインフォームを開いて、サブフォームのプロパティシートを設定します。そのプロパティシートでは、リンクのマスターとリンクの子フィールドを設定するだけです。リンクマスターはメインフォームのプライマリキーに設定され、リンクの子はサブフォームのテーブルの外部キーフィールドに設定されます。
上記の操作が完了したら、すべての処理がすべてのコードなしで実行されるはずです。子の追加のエラーメッセージについては
:彼らは新しい顧客レコードに移動するまで
あなたがメインの顧客のフォームを持っていると仮定すると、ユーザーは順番を追加することはできません。新しい顧客レコードに移動しない場合、このメインフォームの既存の顧客を編集します。したがって、すべてのケースで主要な顧客レコードは、顧客注文を入力する前に常に追加されます。
ユーザーが空白の顧客レコードに移動し、その注文があるサブフォームにカーソル(フォーカス)をジャンプして入力を開始できるとします。このシナリオでも、フォーカスが主コスプレマーフォームからオーダーサブフォームに移動すると、空白の顧客レコードが追加されます。 (したがって、アクセスUIは、クラシックメインフォームとサブフォームの設定を使用しているときに親レコードの追加を処理します)
したがって、ユーザインタフェースの観点から見ると、既に存在する主要な顧客レコードなしで注文を入力することができます。このため、存在しない親顧客レコードに関するエラーメッセージは表示されません。人が注文フォームを非サブフォームとして開き、新しい注文レコードを追加しようとすると、この種のエラーが発生するだけです。この場合、エラーメッセージが表示されます。したがって、私は本当にこのエラーメッセージをトラップする必要はありません。私は、ユーザーが単独でサブフォームを開くことを許可しません。いくつかの奇妙な理由で、サブフォームをメインフォームとは別に開くことができる場合は、additons = falseを指定してフォームを開きます(また、エラーメッセージの必要性を回避します)。
ユーザーがそのサブフォームまたは注文フォームを個別に開くことが許可され、許可追加を無効にしていない場合は、新しい空レコードに移動できます顧客レコードへのFKが正しく設定されないことを意味します。実際のエラーメッセージをトラップされていないという意味でもう一度
If isnull(foreign key field name goes here) = true then
Msgbox “ you must select a customer before you can enter an order”
Cancel = true
End if
を:この受注の規定は、顧客を選択するために形成するがある場合、あなたは最も確かに、この注文フォームの更新イベントの前に次のコードを置くことができ親レコードが存在しない状態で子レコードが追加されようとしていることを示します。 UIインターフェイスを使用して、エラーメッセージが最初に発生することを防ぐアクションをユーザーに伝えるだけです。
ありがとうございます!私は前にこの作業をしましたが、いくつかの練習が必要です。顧客の行が1つもない場合、レコードを追加する(この場合は注文)というユーザーを防ぐ方法はありますか? Accessはエラーをスローします(詳細を覚えていないことがあります)。自分のエラーメッセージ/ボックスでAccessのエラーを上書きできませんか? – dotnetdev
テーブルBの外部キーが必要な場合、データベースエンジンはエラーを発生させる必要があります。フォーム上には、Form_Errorイベントがあり、すべてのデータエラーに対して起動する必要があります。 – Mark3308