【发布时间】:2012-02-08 23:53:51
【问题描述】:
我在 DAO 中有一个代码连接到 SQL Server 2008 中的链接表。我需要在 .AddNew 上获取新创建的自动编号。
Set db = CurrentDb
Set rs = db.OpenRecordset("AuditTrail")
rs.AddNew
rs("ActionID") = actionAdd
rs("dtDateTime") = Now()
rs("FormName") = frmName
rs("TableName") = tblName
rs("RecordID") = actionAdd
rs("Comment") = Nz(comment, "")
rs("UserID") = UserIDName
rs("UsernamePC") = VBA.Environ("USERDOMAIN")
rs("DomainPC") = VBA.Environ("USERDOMAIN")
rs("ComputerNamePC") = VBA.Environ("COMPUTERNAME")
rs.Update
rs.Close
如果我在rs.Close 之前使用rs("AuditTrailID"),它会返回1(第一个条目)。
【问题讨论】:
-
如果您在记录集中包含自动编号,那么您可以在调用 Update 后读取该值吗?
-
记录集指向 lnked 表,在本例中包括自动编号字段 ([AuditTrailID])。在 rs.update 命令之后,它总是返回 1。
-
作为最后的手段,您可以使用刚刚插入的记录值查询更新后的表的 Id。我敢肯定这就是你试图避免做的事情......
-
只是出于好奇,这是您使用的确切代码吗?我问是因为如果您不将
RecordsetOptionEnum.dbSeeChanges选项与具有 Indentity 字段的 SQL 表一起使用,您会收到错误消息。如果它与建议的代码完全相同,AuditTrail不是 SQL 表,也许是它的dbo_AuditTrail。或者它没有标识列 -
AuditTrail 是一个链接到 SQL Server 2008 表的表(在 Access 中)。 AuditTrailID 设置为身份规范。我没有修改代码,只是省略了变量声明。我到底在哪里添加
RecordsetOptionEnum.dbSeeChanges?