小编MrM*_*oxy的帖子

无法使用新记录在Access窗体中设置字段值

当我将访问表单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.记录集类型是动态集.

否则,这个表格一切正常.

我究竟做错了什么?是否有一个名为"打开新记录"的事件而不是"开放形式"?

谢谢你的帮助!

ms-access access-vba

3
推荐指数
1
解决办法
7621
查看次数

标签 统计

access-vba ×1

ms-access ×1