Access vba: как выполнить вставки в две связанные таблицы? - PullRequest
1 голос
/ 24 февраля 2012

Это вполне может быть основным вопросом, но я не смог найти никаких тем по этому вопросу, поэтому я обращаюсь к экспертам!

У меня есть подпрограмма в форме, в которую я хочу вставить строки в связанные таблицы. Родительская таблица имеет идентификатор, который является полем автономного номера; Мне нужно использовать идентификатор недавно созданной строки и вставить его в качестве внешнего ключа в дочернюю таблицу. Я попробовал следующее:

Dim x As Recordset
Dim newId As Integer

Set x = CurrentDb.OpenRecordset("select * from T")
With x
    .AddNew
    !OtherColumns = SomeValues
    .Update
    newId = .Fields("Id")
End With

Поскольку Id является столбцом автономного номера, ему назначается следующий доступный номер, все в порядке - после того, как этот подраздел заканчивается, таблица содержит новую строку с идентификатором, который был сгенерирован автоматически. Но переменная newId не содержит новое значение Id, которое было сгенерировано для добавленной строки. Вместо этого он содержит идентификатор первой строки в наборе записей.

Как я могу получить новый идентификатор?

1 Ответ

2 голосов
/ 24 февраля 2012

После первого запроса вы можете запустить второй запрос "Select @@Identity", чтобы получить последний автоматически сгенерированный номер в текущем соединении, например (не проверено)

Dim rs2 As Recordset
Set rs2 = CurrentDb.OpenRecordset("Select @@Identity")
newId = rs2(0)
...