Автоматический старт транзакции Firebird

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Автоматический старт транзакции Firebird

Сообщение 3Hub » Сб 26 мар 2016 16:18

У компонента TUniQuery прописаны читающая и пишущая транзакции. Установлены свойства SQLUpdate и SQLInsert. При вызове метода Edit пишущая транзакция автоматически стартует, а вот при вызове Append - нет. В чем может быть причина?
У FIB-компонентов было свойство poStartTransaction, которое управляло автоматическим стартом. Есть ли что-то подобное в UniDac?

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Автоматический старт транзакции Firebird

Сообщение ViktorV » Вт 29 мар 2016 13:18

При использовании свойства TUniQuery.UpdateTransaction для модификации данных будет использоваться транзакция указанная в этом свойстве. Тогда, при подтверждении изменений вызванных как методом TUniQuery.Edit, так и методом TUniQuery.Append автоматически стартует вышеуказанная транзакция и сразу же вызывается ее метод Commit. Обратите внимание, транзакция будет стартовать не при выполнении методов TUniQuery.Edit (TUniQuery.Append), а при вызове метода TUniQuery.Post.
Для определения запуска необходимой вам транзакции вы можете использовать обработчик события TUniTransaction.OnStart. Пожалуйста, используйте данный обработчик события для логирования старта транзакции, определенной в свойстве TUniQuery.UpdateTransaction, и сообщите нам стартует ли данная транзакция после подтверждения изменений вызванных методом TUniQuery.Append.

3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Re: Автоматический старт транзакции Firebird

Сообщение 3Hub » Ср 30 мар 2016 22:24

Получается, что последовательность событий при Edit и Append отличается.
Вызываем Edit():
1.StartTransaction
2.Enter в гриде
3.BeforePost
4.AfterPost
5.Commit

Вызываем Append():
1.Enter в гриде
2.BeforePost
3.StartTransaction
4.Commit
5.AfterPost

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Автоматический старт транзакции Firebird

Сообщение ViktorV » Чт 31 мар 2016 08:50

При использовании отдельной пишущей транзакции как при вызове TUniQuery.Edit, так и при вызове TUniQuery.Append выполняется одинаковая последовательность событий:
- TUniQuery.BeforePost
- TUniTransaction.OnStart
- TUniTransaction.OnCommit
- TUniQuery.AfterPost
Пожалуйста, составьте и вышлите на viktorv*devart*com пример демонстрирующий описанное вами поведение, при котором последовательность событий при выполнении TUniQuery.Edit и TUniQuery.Append различается.

Закрыто