当我将访问表单ActivityTracker打开到新记录时,我希望它使用当前时间now()自动填充字段*start_time*.
Private Sub Form_Open(Cancel As Integer)
If IsNull(Form_ActivityEntry.Start_time) And IsNull(Form_ActivityEntry.id) Then
Form_ActivityEntry.Start_time = Now()
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
这会引发错误"您无法为此对象赋值"并停止执行.
我可以通过明确地转到新记录来修复错误
Private Sub Form_Open(Cancel As Integer)
If IsNull(Form_ActivityEntry.Start_time) And IsNull(Form_ActivityEntry.id) Then
DoCmd.RunCommand acCmdRecordsGoToNew
Form_ActivityEntry.Start_time = Now()
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
或者
Private Sub Form_Open(Cancel As Integer)
If IsNull(Form_ActivityEntry.Start_time) And IsNull(Form_ActivityEntry.id) Then
Me.Recordset.AddNew
Form_ActivityEntry.Start_time = Now()
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
但是其中任何一个都会导致弹出警告,"你无法转到指定的记录."
我试图用这个来压制警告
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdRecordsGoToNew
DoCmd.SetWarnings True
Run Code Online (Sandbox Code Playgroud)
或者通过设置错误处理,
On Error GoTo Err_SomeName
Run Code Online (Sandbox Code Playgroud)
但我仍然得到警告.
AllowAdditions设置为True.记录集类型是动态集.
否则,这个表格一切正常.
我究竟做错了什么?是否有一个名为"打开新记录"的事件而不是"开放形式"?
谢谢你的帮助!