Большую часть времени я использую открытый набор записей, добавляю данные, обновляю, получаю метод идентификации, однако, как сказал Кассной, это может быть ресурсоемким. Для частей приложения, которые вызываются много или должны работать как можно быстрее, я склонен использовать хранимую процедуру с идентификатором новой строки в качестве возвращаемого параметра.
Вот пример кода
Set cmd = New ADODB.Command
With cmd
.CommandText = "sptblTest_questions_UPSERT"
.CommandType = adCmdStoredProc
.ActiveConnection = dbCon
.Parameters.Append .CreateParameter("@Question_ID", adInteger, adParamInput, 0, Me.txtQuestion_ID)
.Parameters.Append .CreateParameter("@Section_ID", adInteger, adParamInput, 0, Me.txtSection_ID)
.Parameters.Append .CreateParameter("@Question_number", adTinyInt, adParamInput, 0, Me.txtQuestion_number)
.Parameters.Append .CreateParameter("@Question_text", adVarChar, adParamInput, 1000, Me.txtQuestion_text)
.Parameters.Append .CreateParameter("@Max_score", adSmallInt, adParamInput, 0, Me.txtMax_score)
.Parameters.Append .CreateParameter("@User", adVarChar, adParamInput, 50, fOSUserName)
.Parameters.Append .CreateParameter("@Inserted_ID", adInteger, adParamOutput, 0)
.Execute
Me.txtQuestion_ID = .Parameters("@Inserted_ID")
End With