0

我有一个事件表,它记录了每个人的多个事件。我添加了一个 event_number 字段,以允许用户识别每个人的事件顺序并在它们之间移动。添加了一个带有以下代码的 New Event 按钮,该按钮查找人员的最后一个事件编号,并在表中插入一个新行,其中包含一些基本数据,例如他们的 ID 和下一个可用的事件编号。这工作正常,但我需要做的是移动事件子表单,以便在表单上显示这个新的事件编号,以便可以添加其余数据。尝试了围绕 DoCmd.GoToRecord 的各种选项,但只能设法显示一个空白子表单,而不是显示新输入的事件编号。有任何想法吗?

Private Sub btnNewEvent_Click()  
   'add a new event by setting discriminator and event number
   Dim lngLast As Long
   Dim strQuery As String
   lngLast = DMax("[event_number]", "event", "[PersonID] = [Forms]![frmContainer]![txPersonID]")
   lngLast = lngLast + 1
   strQuery = "INSERT INTO event ( ID, event_discriminator, event_number ) " & _
           "VALUES ([Forms]![frmContainer]![txtPersonID], 'NR', " & lngLast & ")"
   DoCmd.RunSQL (strQuery)
End Sub
4

1 回答 1

0

这取决于子表单是连续表单还是单一表单以及您的应用程序如何工作。重新查询子表单然后找到相关记录可能就足够了:

''Running from the main form
Me.MySubformcontrolName.Form.Requery

Me.MySubformcontrolName.SetFocus
With Me.MySubformcontrolName.Form.Recordset
    .FindFirst "ID=" & lngLast 
End With

或者

''From the subform:
Me.Requery

With Me.Recordset
   .FindFirst "ID=" & lngLast 
   ''Other stuff
End With

它可能适合简单地将子表单记录源重置为仅包含最新记录的 SQL 字符串。

请注意,您选择的获取新号码的方式在单一用户环境中是不安全的。

于 2012-07-04T12:06:24.767 回答