MeenOg Ответов: 2

Как мне получить номер последней транзакции?


Я использую таблицу AUTONUMBERED MS Access для хранения транзакций в моем VB.net применение.

Я вставляю данные в цикл Begin/Commit/Rollback.

Выполняя серию транакций, после того как я вставлю запись с помощью

Dim pCmd As New OleDb.OleDbCommand(sQ, oCn, oTr)
     pCmd.ExecuteNonQuery()


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

Однако использование Max(Id) в таблице транзакций не всегда работает корректно, так как я не могу определить, завершен ли ExecuteNonQuery?

Есть ли какой-нибудь способ определить, что таблица обновляется?

Надеюсь, это имеет смысл.

Миног

Что я уже пробовал:

ExecuteNonQuery возвращает количество обновленных строк, но сразу же запрашивая Max(Id) таблицы, обычно возвращает непосредственно предыдущий номер строки.

W∴ Balboos, GHB

Попробуйте запустить его без обертывания в транзакцию - если он работает, то соответствующим образом отрегулируйте порядок кода/запросов.

2 Ответов

Рейтинг:
19

MeenOg

После дальнейшего интеллектуального интернета я нашел решение следующим образом:

Dim pCmd как новый OleDb.OleDbCommand(sQ, oCn, oTr)
пкмд.Метод executenonquery()
pCmd.CommandText = "SELECT @@Identity"
родитель = CInt(pCmd.Executescalar так)

где parent - это идентификатор автономера вставленной строки.


Рейтинг:
1

MeenOg

Спасибо, Балбуз, но поскольку они родственники, мне нужно их завернуть. В принципе, я спрашиваю, есть ли в любом случае возможность определить, завершен ли ExecuteNonQuery. Раньше это не было проблемой в АДО.


Richard Deeming

Если вы хотите ответить на комментарий, нажмите кнопку "ответить" рядом с этим комментарием. НЕ опубликуйте свой ответ как "решение".