2009-08-10 2 views
1

У меня есть форма, которая передает приблизительно 37 значений базе MS Access с запросом INSERT или UPDATE. На самом деле это происходит очень быстро, поэтому мое желание указать этот процесс на индикатор выполнения - это просто причудливая функция. Как я могу связать выполнение запроса mysql с тем, чтобы продолжить заполнение бара? Или я должен просто подражать этой относительности?Обработка запроса MySQL, показанного на индикаторе выполнения

+0

Давайте сделаем вид, что ваш SQL занимает много времени (например, 30 секунд) для выполнения. Вы ищете индикатор выполнения, который будет плавно заполняться в течение этих 30 секунд на основе некоторой информации, которую у вас есть о том, что в настоящее время база данных имеет определенный процентный показатель с выполнением вашего запроса? –

ответ

1

Если вы используете DBExpress TSQLConnection, он имеет свойство ActiveStatements

Так что, если вы добавить таймер, который стреляет каждые N секунд, когда он срабатывает проверить свойство ActiveStatements и обновлять свой статус, соответственно.

Update: Как правильно отметил Роб Кеннеди в комментариях, ActiveStatements не показывает вставки или обновления заявления, поэтому он не будет работать на то, что вы хотите.

TADOConnecttion тем не менее имеют OnWillExecute и OnExecuteComplete события, что огонь до или после выполнения команды, так что это может быть возможно сделать что-то с ними, я просто проверял, и они работают на обновления заявления.

+0

Вы хотите сказать, что, начиная с 37 активных операторов, а затем периодически проверяя, сколько из них все еще активны? Это не похоже на правильную идею для меня. Похоже, что «ActiveStatements» обновляется только тогда, когда набор данных открывает или закрывает курсор, что на самом деле не распространяется на запросы * insert * и * update *, не так ли? –

+0

Я использую ADOConnection. Извините, забыл упомянуть об этом. – Vlad