Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Firedac master-detail зависшая транзакция / 4 сообщений из 4, страница 1 из 1
04.09.2019, 15:22
    #39857262
jeykey84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firedac master-detail зависшая транзакция
Добрый день.
Вопрос в большей степени к Dmitry Arefiev
Используется среда разработки Embarcadero® Delphi 10.1 Berlin Version 24.0.25048.9432
БД: Firebird 2.5
На сервере приложений при помощи FireDac (FDQuery) используется связка Master-detail (FDQuery1 -> DataSource -> FDQuery2)
На клиент все это дело передается через один TDataSetProvider.
На клиенте разворачивается соответственно в ClientDataSet1 (master) и ClientDataSet2 (detail)
Проблема возникает если в master таблице нет записей.
В этом случае возникает зависшая транзакция и все изменения начинают происходить в рамках этой транзакции, соответственно в БД они записываются после закрытия клиента.



Может у FDQuery есть какая-то волшебная галочка, которая исправляет эту проблему?
Я сделал тестовые БД и пример, который воспроизводится в дизайн-тайме.
...
Рейтинг: 0 / 0
04.09.2019, 15:38
    #39857273
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firedac master-detail зависшая транзакция
транзакции нужно коммитить и откатывать тогда, когда это нужно.
а не надеяться на "неестественный интеллект" библиотеки доступа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.09.2019, 16:01
    #39857299
jeykey84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firedac master-detail зависшая транзакция
Для воспроизведения необходимо в дизайн тайме установить свойство Active в True у ClientDataSet1
...
Рейтинг: 0 / 0
04.09.2019, 20:34
    #39857492
jeykey84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firedac master-detail зависшая транзакция
Если в таблице master нет данных, то при открытии detail не выполняется процедура TFDCustomCommand.Fetch юнита FireDAC.Comp.Client, а в ней полю FOperationFinished должно присваиваться событие FetchFinished, которое закрывает транзакцию.
В итоге остается открытая транзакция.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Firedac master-detail зависшая транзакция / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]