表单字段显示运行'acCmdSaveRecord'后的'#DELETED'



我今天遇到一个问题,我的一个表单在保存记录后用"#DELETED"填充所有字段。这不是三个小时前发生的,而且似乎是在我没有改变表格本身的情况下开始的。该记录仍在保存中,表中任何时候都没有"#DELETED"条目。我正在使用以下代码打开表单:

DoCmd.OpenForm "frmPoster", , , , acFormAdd

这是保存它的代码:

Call DoCmd.RunCommand(acCmdSaveRecord)

我将Access2010与SQL Server和VB一起使用。正如我所说,真正令人困惑的部分是,似乎没有任何变化会导致这种情况。它奏效了,但现在不行了。有什么想法吗?

此外,如果你想了解更多关于这个问题的信息,我很乐意提供。

我在Access中使用过很多SQL,也遇到过一些类似的问题,我建议您,除非您已经确保SQL数据中有时间戳字段,并且在更新后在VBA中执行me.requery,以便它重新选择记录。

我昨天遇到了同样的问题——我一尝试保存记录,所有字段都会变成#Deleted。几个小时都在努力解决问题,但没有成功。我使用Access 10/2016和MySQL ODBC连接器5.3。我把它缩小到一个特定的字段,其中有一个13位数的数字。字段的数据类型为varchar。当我输入任何与所需格式不匹配的值(如VBA检查的),然后删除或编辑它并移动到下一个字段时,表单在保存时拒绝创建UserID,并给出#Deleted。如果在数据输入过程中跳过此字段,则表单将创建UserID(主键)并保存。此外,如果我第一次输入的值与字段条件匹配,表单将生成主键并保存。正如在某个地方建议的那样,我将该字段的数据类型更改为数字14,0。这无济于事。按照建议保存后,我试图重新查询表单,但由于记录被删除,它只显示空白字段。下面是我的破解方法:1.在表单中第一个字段的"On Enter"事件中,运行代码在每个必需字段中设置临时值,例如:首先,我创建了一个未绑定的隐藏字段,默认值为"否"。然后:

If Me.NewRecord=True and Me.FormPreppedYN="No" then
    Me.txtFirstName="Hello"
    Me.txtLastName="There"
    Me.IDNr=123
    Me.Ref="ABC"
    Me.Dirty=False
    Me.txtFirstName="" 
    Me.txtLastName=""
    Me.IDNr=Null
    Me.Ref=""
    Me.txtFirstName.SetFocus
    Me.FormPreppedYN="Yes"
End If

这将强制窗体创建主键。这种情况发生得很快,用户没有注意到。他们只是输入数据。每次都能可靠地工作。我仍然不知道是什么原因导致了错误,但这修复了它。

最新更新