0

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 つのサブフォームが適切に機能するのを見て、回避策ではなく解決策を求めています。

4

2 に答える 2

2

サブフォームのデザイン ビューに移動し、サブフォームのプロパティで [データ入力] という設定を見つけます。

それを「はい」に変更すると、サブフォームの動作が変わります。

それ以降、すべてのサブフォームは明確になり、新しいレコードのデータを受け入れる準備が整います。レコードが入力されると、サブフォームはクリアされ、別の新しいレコードの準備が整います。

このオプションは、どのフォームでも使用できます。

この設定で他の 2 つのサブフォームを更新します。VBA不要で簡単!

于 2013-02-06T21:20:39.283 に答える
1

継続的な考え:

サブフォームで「データ入力」設定を静的に「はい」に設定すると、古いレコードの参照機能が機能しなくなったことがわかりました。新しいレコードには古いデータが含まれていませんでしたが、古いレコードにも入力内容が表示されませんでした。「データ入力」設定により、新しいデータの準備が整うからです。やらなければならなかったことは、レコードが「新規」かどうかに応じて、各サブフォームの「データ入力」設定をアクティブに設定することでした。

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
 Me!SubFormName0.Form.DataEntry = True
 Me!SubFormName1.Form.DataEntry = True
 Me!SubFormName2.Form.DataEntry = True
Else
 Me.Stuff = DatabaseNumbers
 Me!SubFormName0.Form.DataEntry = False
 Me!SubFormName1.Form.DataEntry = False
 Me!SubFormName2.Form.DataEntry = False
End If

End Sub

助けてくれてありがとう!

于 2013-02-13T13:36:06.233 に答える