У меня есть прогресс бар, который обновляет на основе линии:VBA - Обновление индикатор выполнения во время выполнения SQL-запроса
Call ProgressBar(X)
где X указывает процент, что бар отображается как «полное».
Я грубо подсчитал различные временные интервалы по всему коду и разместил линию на несколько мест. Он находится в точке, где он работает довольно гладко для большинства кода, но только в половине бара, при этом проблема заключается в вынужденном прыжке с 10% до 60%.
Я использую ADODB-соединение для запуска SQL-запроса в коде (я не могу извлечь его из кода, потому что через него передаются переменные). Скачок от 10 до 60 по обе стороны от линии, где я выполнения запроса
Set rs = conn.Execute(QryND)
где г определяется как ADODB.Recordset и Конн, как ADODB.Connection.
Я думаю, в идеале, что я после должен был бы знать, если это можно сказать:
Call ProgressBar(10)
'code to the effect of: "in x seconds, execute the next line but in
'the meantime continue with the code
Call ProgressBar(20)
'code to the effect of: "in 2x seconds, execute the line but in the
'meantime continue with the code
Call ProgressBar(30)
Set rs = conn.Execute(QryND)
Или что-то по этому вопросу.
В качестве альтернативы средство выполнения запроса в фоновом режиме и продолжение кода до точки. Например:
Call ProgressBar(10)
'instruct to run in backrgound:
Set rs = conn.Execute(QryND)
Call ProgressBar(10)
'wait x seconds
Call ProgressBar(20)
'wait x seconds
.
.
.
'Stop running query in background (in case it hasn't finished)
Возможно ли сделать любой из этих звуков?
ADO поддерживает запланированное выполнение async, если вы считаете его целесообразным реализовать: https://support.microsoft.com/en-us/kb/190988 –