使用幻影数据访问2010新记录



在此访问2010。

我对我的三个子表单中的两个子表单有一个挥之不去的担忧。每个子表单都绑定到它们自己的具有唯一信息的表;主窗体也绑定到它自己的表。所有三个子表单表与主表单表都是一对一的关系。我的第一个子表单的正常操作是,当有一个新记录时,它的所有绑定条目字段都显示为空。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

对于所有三个子窗体和主窗体都存在,以显示较旧的记录,并通过重置复选框等为数据输入准备窗体;没有代码可以"重置"条目字段本身。不幸的是,其他两个子表单保留了上次输入的记录中的数据,并将其显示为用户想要重新输入相同的数据。问题是,除非用户明确地输入数据输入字段,然后以任何方式离开它,否则这些数据毫无意义。简单地移动到下一条记录而不输入数据输入字段并不能保存幻影预先输入的数据(这是预期的,因为子表单中的记录从未制作,因为用户从未在子表单中输入数据)。

我要找的是一个特定于表单的选项,默认情况下打开一个干净的记录,或者VBA代码,它可以确保新记录上的数据字段为空。当在主窗体中打开新记录时,我尝试过主动重新查询子窗体,但没有成功。我还尝试在输入新记录时将值预先设置为",这在一定程度上确实有效,但鉴于一个子表单工作正常,我寻求的是解决方案,而不是解决方法。

进入子窗体的设计视图,在子窗体的属性中找到名为"数据输入"的设置。

将其更改为"是"将更改子窗体的行为。

从那时起,所有子表单所要做的就是明确并准备好接受新记录的数据。输入记录后,子窗体将被清除,并将为另一个全新的记录做好准备。

此选项适用于任何形式。

我将使用此设置更新其他两个子窗体。简单,不需要VBA!

继续思考:

我发现,在子窗体上将"数据输入"设置为"是"时,旧的记录浏览功能不再有效。新记录中没有旧数据,但现在旧记录也没有显示输入的内容;因为"数据输入"设置为它们准备新数据。必须做的是根据记录是否为"新",在每个子窗体上主动设置"数据输入"设置:

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

再次感谢您的帮助!

最新更新