Если Вы хотите в программе, реализованной в Access 2003 наблюдать за ходом выполнения определённой задачи в строке состояния, то сегодня в материале я покажу, как это можно делать, т.е. отображать индикатор выполнения или произвольный текст в строке состояния.
Для начала давайте определим, в каких случаях может возникнуть необходимость следить за выполнением кода. Например, тогда когда Вы делаете выгрузку из базы данных и затем обрабатываете каждую строку данных, как мы это делали в материале «Экспорт данных в CSV из SQL Server» или наоборот когда Вы импортируете данные в базу, как мы это делали в материале «Импорт данных из текстового файла на VBA Access в SQL Server». Другими словами мы могли бы создать индикатор и видеть, сколько примерно времени осталось до завершения операции.
Или если у Вас просто какая-то многозадачная операция и Вам хотелось бы знать, в каком состоянии, или на каком этапе сейчас находится процесс выполнения задачи, то в этом случае можно просто вставлять произвольный текст в строку состояния в начале каждого этапа в коде программы.
Все это можно сделать с помощью метода SysCmd, который позволяет отображать индикатор выполнения и текст в строке состояния Access 2003, ниже я покажу пример реализации этой возможности.
Отображаем индикатор выполнения в строке состояния Access 2003
Итак, давайте откроем форму на редактирование или создадим новую тестовую форму и добавим на нее кнопку TestInitMeter и в обработку события этой кнопки (в редакторе Microsoft Visual Basic) вставляем ниже представленный код. Он подразумевает создание индикатора и обновление его значения. Для того чтобы проверить работу индикатора мы запустим цикл For на 100 итераций, в котором мы будем делать паузу на 5 миллисекунд в каждой итерации, для того чтобы увидеть изменение индикатора. Паузу мы будем делать с помощью функции Sleep, поэтому в секции Option Compare Database подключаем необходимую библиотеку.
В итоге в строке состояния у нас получится своего рода прогресс бар.
Option Compare Database 'Подключаем библиотеку для Sleep Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub TestInitMeter_Click() Dim i As Integer 'Очистим строку состояния SysCmd acSysCmdClearStatus 'Создаем тестовый индикатор, максимальное значение индикатора 100 SysCmd acSysCmdInitMeter, "Тестовый индикатор", 100 'Цикл для проверки работы индикатора For i = 0 To 100 Sleep (5) 'Пауза на 5 миллисекунд SysCmd acSysCmdUpdateMeter, i 'Обновляем значение индикатора Next 'Еще раз очищаем строку состояния SysCmd acSysCmdClearStatus End Sub
Сохраняем и пробуем нажать на кнопку
Видим, что в строке состояния отображается наш индикатор.
Отображаем текст в строке состояния Access 2003
Теперь давайте попробуем просто отобразить текст в строке состояния, для этого добавим еще одну кнопку на нашу форму, допустим с названием TestSetStatus и в обработку события вставляем следующий код:
Private Sub TestSetStatus_Click() 'Очистим строку состояния SysCmd acSysCmdClearStatus 'Задаем текст в строке состояния SysCmd acSysCmdSetStatus, "Мой текст в строке состояния" End Sub
Весь код будет выглядеть следующим образом
Проверяем работу
Работает.
На этом все, пока!