2

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

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

任何帮助将不胜感激。

4

2 回答 2

1

在这些线上尝试一些东西。这个对我有用:

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

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

于 2012-09-06T14:22:19.713 回答
0

当使用 SharePoint 或 SQL 服务器,或者事实上大多数基于服务器的数据库时,在记录保存时间之前不会生成自动编号 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 自动编号。

于 2012-09-06T16:39:48.697 回答