私は自分の Access DB を修正してクリーンアップし、よりユーザーフレンドリーにしています。そのため、フォーム ラベルとコントロールの名前を変更して、Access が割り当てた一般的な名前ではなく、_lbl と _Ctrl を含めました。以前は、フォームを呼び出すボタンを使用してアクセスできる 3 つの個別のフォーム (ListingsForm、ListOffersForm、ListDetailsForm) がありました。フォームはプライマリ フォーム (ListingsForm) に直接関連していたので、2 つのフォームをサブフォームに変更しました。レコードを追加しようとすると、エラーが発生し続けます。
ListingsForm フォームには、プロパティ アドレス (Address_Ctrl) のコントロール フィールドがあります。このコントロールは、プロパティと呼ばれる別のテーブルにリンクされているコンボ ボックスを使用します。プロパティのアドレスがドロップダウン ボックスに表示されていない場合は、PropertyForm フォームを表示して新しいプロパティを入力していました。その後、新しいレコードで新しいリストを取得するために再クエリが実行されました。サブフォームを作成してコントロール名を変更した後、新しいプロパティ アドレスを追加しようとするとエラーが発生します。
実行時エラー '2473':
イベント プロパティの設定として入力した [On Not in List] 式により、次のエラーが発生しました。スタック スペースが不足しています。
'Add Address Form Script
Private Sub Address_Ctrl_NotInList(NewData As String, Response As Integer)
DoCmd.OpenForm "PropertyForm", , , , acFormAdd
Call Address_Ctrl_AfterUpdate
End Sub
'Requery Address List Script
Private Sub Address_Ctrl_AfterUpdate()
Forms!MLSListForm.Dirty = False
Me!Address_Ctrl.Requery
End Sub
Forms!MLSListForm.Dirty = False 行が強調表示されます。Me.Dirty = False を試しましたが、同じエラーが発生します。この行を完全に削除すると、「実行時エラー '2118': 再クエリ アクションを実行する前に、現在のフィールドを保存する必要があります」というメッセージが表示されます。
フォームをサブフォームとして持つことはユーザー インターフェイスに役立つため、3 つの別個のフォームを持つことには戻りたくありません。どんな助けでも大歓迎です。