У компонента TUniQuery прописаны читающая и пишущая транзакции. Установлены свойства SQLUpdate и SQLInsert. При вызове метода Edit пишущая транзакция автоматически стартует, а вот при вызове Append - нет. В чем может быть причина?
У FIB-компонентов было свойство poStartTransaction, которое управляло автоматическим стартом. Есть ли что-то подобное в UniDac?
Автоматический старт транзакции Firebird
Re: Автоматический старт транзакции Firebird
При использовании свойства TUniQuery.UpdateTransaction для модификации данных будет использоваться транзакция указанная в этом свойстве. Тогда, при подтверждении изменений вызванных как методом TUniQuery.Edit, так и методом TUniQuery.Append автоматически стартует вышеуказанная транзакция и сразу же вызывается ее метод Commit. Обратите внимание, транзакция будет стартовать не при выполнении методов TUniQuery.Edit (TUniQuery.Append), а при вызове метода TUniQuery.Post.
Для определения запуска необходимой вам транзакции вы можете использовать обработчик события TUniTransaction.OnStart. Пожалуйста, используйте данный обработчик события для логирования старта транзакции, определенной в свойстве TUniQuery.UpdateTransaction, и сообщите нам стартует ли данная транзакция после подтверждения изменений вызванных методом TUniQuery.Append.
Для определения запуска необходимой вам транзакции вы можете использовать обработчик события TUniTransaction.OnStart. Пожалуйста, используйте данный обработчик события для логирования старта транзакции, определенной в свойстве TUniQuery.UpdateTransaction, и сообщите нам стартует ли данная транзакция после подтверждения изменений вызванных методом TUniQuery.Append.
Re: Автоматический старт транзакции Firebird
Получается, что последовательность событий при Edit и Append отличается.
Вызываем Edit():
1.StartTransaction
2.Enter в гриде
3.BeforePost
4.AfterPost
5.Commit
Вызываем Append():
1.Enter в гриде
2.BeforePost
3.StartTransaction
4.Commit
5.AfterPost
Вызываем Edit():
1.StartTransaction
2.Enter в гриде
3.BeforePost
4.AfterPost
5.Commit
Вызываем Append():
1.Enter в гриде
2.BeforePost
3.StartTransaction
4.Commit
5.AfterPost
Re: Автоматический старт транзакции Firebird
При использовании отдельной пишущей транзакции как при вызове TUniQuery.Edit, так и при вызове TUniQuery.Append выполняется одинаковая последовательность событий:
- TUniQuery.BeforePost
- TUniTransaction.OnStart
- TUniTransaction.OnCommit
- TUniQuery.AfterPost
Пожалуйста, составьте и вышлите на viktorv*devart*com пример демонстрирующий описанное вами поведение, при котором последовательность событий при выполнении TUniQuery.Edit и TUniQuery.Append различается.
- TUniQuery.BeforePost
- TUniTransaction.OnStart
- TUniTransaction.OnCommit
- TUniQuery.AfterPost
Пожалуйста, составьте и вышлите на viktorv*devart*com пример демонстрирующий описанное вами поведение, при котором последовательность событий при выполнении TUniQuery.Edit и TUniQuery.Append различается.