MS Access FE / SQL BE需要AutoNumber才能在保存后填写表单

时间:2012-09-06 13:55:10

标签: sql database ms-access ms-access-2007

所以,我有一个带有SQL BE的Access 2007 FE。我使用绑定表单添加新记录或更新现有记录。

我的问题是:与本地Access表不同,使用SQL表会导致自动编号字段(“SeqID”)在保存记录之后才可用。我在表单上有一个“保存”按钮,它对新记录执行各种验证步骤,然后在成功验证后向表中添加新记录。此时,我能够在我的代码中获取该记录的自动编号,但问题是我无法在SeqID字段中获取更新/显示它的表单。因为它是一个绑定形式,我不能简单地更新SeqID.Value。我需要更新此字段,因为它稍后会用于其他事情,例如更改字段的审计跟踪等。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

尝试这些方面的东西。它对我有用:

Private Sub AText_AfterUpdate()
   Me.Dirty = False
   Me.Recalc
End Sub

如果实验有效,只需将步骤放入代码流程中即可。

答案 1 :(得分:0)

使用SharePoint或SQL Server或实际上大多数基于服务器的数据库时,在记录保存时间之前不会生成自动编号ID。使用表单+子表单时,当焦点移动到子表单时,Access将始终执行自动记录保存,因此将子记录附加到这些父表单+记录时没有问题。

对于绑定表单,获取自动编号ID的唯一方法是强制记录保存。简单的代码就是:

If isnull(me!ID) = true then
    ' we don't have a record primary key yet, save record
   Me.Dirty = false
End if

此时,您可以使用PK自动编号

MsgBox "pk = " & me!id

因此,一个简单的me.Dirty = false将保存记录,并将强制生成ID,然后随后的代码可以随意使用+随意获取PK自动编号。