Если DAO
, используйте
RS.Move 0, RS.LastModified
lngID = RS!AutoNumberFieldName
Если ADO
, используйте
cn.Execute "INSERT INTO TheTable.....", , adCmdText + adExecuteNoRecords
Set rs = cn.Execute("SELECT @@Identity", , adCmdText)
Debug.Print rs.Fields(0).Value
cn
является действительным соединением ADO, @@Identity
возвратит последнее
Identity
(Autonumber) вставлен в это соединение.
Обратите внимание, что @@Identity
может быть проблематично, потому что последнее сгенерированное значение может не совпадать с интересующим вас. Для ядра базы данных Access рассмотрим VIEW
, который объединяет две таблицы, каждая из которых имеет IDENTITY
собственности, а вы INSERT INTO
VIEW
. Для SQL Server рассмотрите, есть ли триггеры, которые в свою очередь вставляют записи в другую таблицу, которая также имеет свойство IDENTITY
.
КСТАТИ DMax
не будет работать так, как если бы кто-то вставил запись сразу после того, как вы ее вставили, но до того, как ваша функция Dmax
завершит выполнение, тогда вы получите их запись.