2010 へのアクセスはこちら。
3 つのサブフォームのうち 2 つについて、しつこい懸念があります。サブフォームはそれぞれ固有の情報を持つ独自のテーブルにバインドされています。メイン フォームも独自のテーブルにバインドされます。3 つのサブフォーム テーブルはすべて、メイン フォーム テーブルと 1 対 1 の関係にあります。最初のサブフォームは正常に動作し、新しいレコードがある場合、バインドされたすべての入力フィールドが空白で表示されます。Form_Current() のコード:
Private Sub Form_Current()
'Determine what should be displayed'
'Do stuff to prepare the current record for display'
If Me.NewRecord = True Then
Me.Stuff = Null
End If
End Sub
3 つすべてのサブフォームとメイン フォームに存在し、古いレコードを表示し、チェック ボックスなどをリセットしてデータ入力用のフォームを準備します。入力フィールド自体を「リセット」するコードはありません。残念ながら、他の 2 つのサブフォームは、最後に入力されたレコードのデータを保持し、ユーザーが同じデータを再入力するかのように表示します。問題は、ユーザーがデータ入力フィールドに明示的に入力し、何らかの方法でそれを離れない限り、このデータは何の意味も持たないということです。データ入力フィールドに入力せずに次のレコードに移動するだけでは、ファントムの事前入力データは保存されません (ユーザーがサブフォームにデータを入力しなかったため、サブフォームのレコードが作成されなかったことが予想されます)。
私が探しているのは、デフォルトでクリーンなレコードを開くためのフォーム固有のオプション、または新しいレコードで空のデータ フィールドを確保できる VBA コードです。メインフォームで新しいレコードが開かれたときにサブフォームを積極的に再クエリしようとしましたが、成功しませんでした。また、新しいレコードを入力するときに値を "" に事前設定しようとしましたが、これはある程度機能しましたが、1 つのサブフォームが適切に機能するのを見て、回避策ではなく解決策を求めています。