ProgressBar для UniQuery с кнопкой останова

1
7

У нас есть задача создать индикатор выполнения запроса к базе данных. В качестве компонентов доступа к базе данных мы используем UniDAC В форме должна быть кнопка "Разорвать", с помощью которой можно в любой момент остановить выполнение запроса, и индикатор выполнения, который будет отображать процесс получения данных. В приложении есть сложные запросы, которые иногда тратят значительное количество времени на построение плана, за это время в режиме NonBlocking UniQuery зависает вместе с приложением и не позволяет выполнять какие-либо действия. Поэтому мы выполняем запрос в отдельном потоке. Но в треде UniQuery ведет себя нестабильно, возникают разные ошибки.

Кто-нибудь решал подобную проблему? Возможно, не с UniDAC? Буду очень благодарен за пример:

при попытке запуска UniQuery в режиме NonBlocking форма появляется только через 5 секунд после завершения работы WAITFOR

UniQuery1.SQL.Text := 'WAITFOR DELAY ''00:00:05''; SELECT top(200000) * FROM dbo.MYTable';
UniQuery1.SpecificOptions.Values['NonBlocking'] := 'TRUE';
UniQuery1.Open;
MyProgressForm.ShowModal;
Ираклий
Вопрос задан2 апреля 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.