Через грид происходит вставка в таблицу Firebird, датасетом которой является TUniQuery. Для него определена отдельная пишущая транзакция. Свойство SpecificOptions->AutoCommit =true.
Но почему-то после Post транзакция не подтверждается. Только установив в true аналогичное свойсто (AutoCommit ) связанного TUniConnection можно добиться автоматического подтверждения. Это баг или такое поведение было задумано?
Не срабатывает AutoCommit для Firebird
Re: Не срабатывает AutoCommit для Firebird
Это стандартное поведение наших компонентов. У свойства TUniConnection.AutoCommit приоритет выше чем у свойства AutoCommit датасетов (TUniQuery, TUniTable). Если свойство TUniConnection.AutoCommit установлено в False, все транзакции могут быть завершены только явно (независимо от значения свойства AutoCommit датасета).
Re: Не срабатывает AutoCommit для Firebird
Позвольте спросить: а не проще ли управлять автоматикой транзакций только на конкретном DataSet-e?
Ведь для разных компонентов, ссылающихся на один и тот же TUniConnection может понадобиться разное поведение транзакций. Имеет ли смысл AutoCommit TUniConnection без учета значений аналогичного свойства подсоединенных датасетов?
Ведь для разных компонентов, ссылающихся на один и тот же TUniConnection может понадобиться разное поведение транзакций. Имеет ли смысл AutoCommit TUniConnection без учета значений аналогичного свойства подсоединенных датасетов?
Re: Не срабатывает AutoCommit для Firebird
Свойство AutoCommit у соединения предназначено для того, чтобы можно было выключить AutoCommit у всех подчиненных датасетов. Если нужно управлять AutoCommit у каждого датасета - нужно оставить значение AutoCommit соединения в True и установить AutoCommit датасетов так, как необходимо для каждого из них.