我有一个事件表,记录每个人的多个事件。我添加了一个event_number字段,允许用户识别每个人的事件顺序并在它们之间移动。添加了一个包含以下代码的“新建事件”按钮,该按钮查找此人的最后一个事件编号,并在表中插入一个新行,其中包含一些基本数据,例如其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
答案 0 :(得分: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字符串。
请注意,除了单个用户环境之外,您选择获取新号码的方式不安全。