当我打开访问表单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
这会引发错误“您无法为该对象赋值”并停止执行。
我可以通过明确转到新记录来修复错误
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
或通过
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
但其中任何一个都会导致弹出警告,“您无法转到指定的记录。”
我试图用这个来抑制警告
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdRecordsGoToNew
DoCmd.SetWarnings True
或通过设置错误处理,
On Error GoTo Err_SomeName
但我仍然收到警告。
AllowAdditions 设置为 True。记录集类型是动态集。
否则,此表单一切正常。
我究竟做错了什么?是否有一个名为“打开新记录”而不是“打开表格”的事件?
谢谢你的帮助!