Доступ: Получить вновь созданный автоматический номер в DAO - PullRequest
4 голосов
/ 12 января 2012

У меня есть код в 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("AuditTrailID") перед rs.Close, возвращается 1 (первая запись).

Ответы [ 2 ]

10 голосов
/ 12 января 2012

Установите свойство Bookmark равным свойству LastModified, чтобы вернуться к только что добавленной записи.

Редактировать: Как заметил Конрад Фрикс, используйте dbSeeChangesопция при открытии набора записей:

Set db = CurrentDb
Set rs = db.OpenRecordset(Name:="AuditTrail", Options:=dbSeeChanges)

rs.AddNew
rs("ActionID") = actionAdd
' ... update additional fields
rs.Update
rs.Bookmark = rs.LastModified
Debug.Print rs("ID")
rs.Close
0 голосов
/ 13 января 2012

Если это база данных SQL Server, которую вы вставляете, не будет ли триггер в базе данных лучшим решением.

...