今天我遇到了一个问题,我的一个表单在保存记录后用“#DELETED”填充所有字段。这种情况在三个小时前没有发生,而且似乎已经开始,而我没有改变表格本身的任何内容。记录仍在保存,表中任何时候都没有“#DELETED”条目。我使用以下代码打开表单:
DoCmd.OpenForm "frmPoster", , , , acFormAdd
这是保存它的代码:
Call DoCmd.RunCommand(acCmdSaveRecord)
我正在使用Access2010与SQL Server和VB。正如我所说,真正令人困惑的部分是,似乎没有任何改变这种形式会导致这种情况。它有效,现在却没有。有什么想法吗?
另外,如果您想了解有关该问题的更多信息,我将很乐意提供。
答案 0 :(得分:1)
我已经将SQL与Access一起使用并遇到了一些类似的问题,除非你已经确定在SQL数据中有一个时间戳字段,并且还要执行me.requery,否则我建议你这样做。在更新后的VBA中重新选择记录。
答案 1 :(得分:0)
昨天我遇到了同样的问题 - 一旦我尝试保存记录,所有字段都转到#Deleted。试图解决几个小时 - 没有运气。 我使用Access 10/2016和MySQL ODBC连接器5.3。 我把它缩小到一个13位数的特定字段。 该字段的数据类型是varchar。当我输入任何与所需格式不匹配的值(由VBA检查),然后删除或编辑它并移动到下一个字段时,表单拒绝在保存时创建UserID并给出#Deleted。 如果我在数据输入期间跳过此字段,则表单将创建UserID(主键)并保存。此外,如果我第一次输入与字段条件匹配的值,则表单将生成主键并保存。 正如我所建议的那样,我将数据类型更改为此字段的数字14,0。 这没有用。 我按照建议保存后尝试重新查询表单但是由于删除了记录,它只显示空白字段。 所以这是我的黑客: 1.在表单中第一个字段的“On Enter”事件中,运行代码以在每个必填字段中设置临时值,例如: 首先,我创建了一个默认值为“No”的未绑定隐藏字段。然后:
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
这会强制表单创建主键。这种情况发生得非常快,用户也没有注意到它。他们只输入数据。 这每次都可靠地工作。我仍然不知道导致错误的原因,但这解决了它。