Чтобы узнать реальное следующее значение, вам нужно найти значение SeedValue для вашего столбца Autonumber.Этот код делает это:
Public Function GetSeedValue(strTable As String, strColumn As String) As Long
Dim cnn As Object 'ADODB.Connection
Dim cat As Object ' New ADOX.Catalog
Dim col As Object ' ADOX.Column
Set cnn = CurrentProject.Connection
Set cat = CreateObject("ADOX.Catalog")
cat.ActiveConnection = cnn
Set col = cat.Tables(strTable).Columns(strColumn)
GetSeedValue = col.Properties("Seed")
Set col = Nothing
Set cat = Nothing
Set cnn = Nothing
End Function
Если вы будете часто это называть, вам, скорее всего, захочется кэшировать переменную объекта каталога ADOX, а не повторно инициализировать ее каждый раз, когда вы вызываете эту функцию.
Обратите внимание, что в многопользовательской среде это может быть или не быть точным, поскольку к тому времени, когда вы его используете, он может быть обновлен другим пользователем.Однако у него нет проблемы с пропуском значений Autonumber, которые могут иметь Max () + 1.
Имейте в виду, однако, что если вы заботитесь о следующем значении Autonumber, это означает, что вы используетеЭТО НЕПРАВИЛЬНО.Значения автонумера являются суррогатными ключами, и вы никогда не должны заботиться о том, что это за значения.