Как всегда получать свежие данные с помощью Zeos TZConnection и TZQuery (в режиме AutoCommit)? - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть приложение Delphi с TZConnection в режиме AutoCommit (подключение к Firebird 3.0) в глобальном модуле DataModule, это единственное соединение обслуживает все запросы во всех модулях данных приложения.

Но у меня проблемато, что запросы видят только те данные, которые были зафиксированы на этапе подключения, а запросы - не новые / свежие данные, поступающие либо из других экземпляров приложения, либо из других компонентов (например, наборов данных IBX) того же приложения.

TZConnection.Reconnect решает эту проблему, но я не уверен, что произошло с другими открытыми формами во время такого жесткого переподключения.

В большинстве случаев было бы так приятно иметь процедуры TZonnection.CommitRetainment или RollbackRetainment (аналогично IBX TIBTransaction), но TZConnection не имеет таких функций, и даже TZConnection.Commit не работает в режиме AutoCommit (возникает ошибка, что Commit несовместим с режимом AutoCommit).

Итак - чтоЭто лучший способ получения свежих данных с помощью TZConnection.Я был бы рад выполнить некоторую функцию в TZonnection при открытии нового модуля DataModule или по запросу клиента для нового отчета.

1 Ответ

0 голосов
/ 27 декабря 2018

Установка свойства TZConnection TransactionIsolationLevel в tiReadCommitted и AutoCommit в значение true решает проблему.

...