Archive for Апрель, 2009
Как получить значение ключевого поля для добавленной записи
Всем привет!
Как оказалось вопросы по этой теме все еще возникают. Рассказываю
.
Значение ключевого поля новой записи при помощи библиотеки DAO можно получить следующим образом (K_KLIENT – ключевое поле):
Dim rst as DAO.Recordset
Dim lPk as Long
' ....
rst.AddNew
rst("T_KLIENT")="ОАО Рога и копыта"
' ...
А дальше есть несколько вариантов:
- 1-й вариант:
lPk = rst("K_KLIENT")
rst.Update
- 2-й вариант:
rst.Update
rst.Bookmark = rst.LastModified
lPk = rst("K_KLIENT")
1-й вариант работает только с таблицами MS Access, т.к. значение счетчика вычилсяется сразу же после AddNew. На всех остальных нужно проверять. Например, с ODBC таблицами 1-й вариант точно не прокатит, т.к. значение счетчика вычисляет сервер.
C библиотекой ADO получится только 1-й вариант.
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "tbl1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rst.AddNew
MsgBox rst("key")
rst.Update
А с серверами БД придется что-то придумывать, например, использовать TimeStamp, чтобы найти только что добавленную запись.
До встречи!
(с) Скоков Сергей