5 строк кода

Как писать комерческие приложения на MS Access

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, чтобы найти только что добавленную запись.

До встречи!

(с) Скоков Сергей

Written by Сергей Скоков

Апрель 2nd, 2009 at 3:10 пп

Posted in решения