Описание
Указывает, закончено ли выполнение асинхронной операции (т.е. вызванной с параметром dbRunAsync). (Только в рабочей области ODBCDirect).
Значение
Возвращаемое значение имеет тип данных Boolean и имеет значение True, если запрос еще выполняется, или False, если выполнение запроса завершено.
Замечания
Свойство StillExecuting используют, чтобы определить, завершено ли выполнение последнего вызванного в асинхронном режиме метода Execute, MoveLast, OpenConnection или OpenRecordset (т.е. метода, вызванного с параметром dbRunAsync). Если свойство StillExecuting имеет значение True, любой возвращаемый объект является недоступным.
В следующей таблице перечислены методы, которые проверяются при вызове свойства StillExecuting для объектов разного типа:
Объект Проверяется асинхронный метод Connection Execute или OpenConnection QueryDef Execute Recordset MoveLast или OpenRecordset
Как только свойство StillExecuting для объекта Connection или Recordset возвращает значение False, становятся возможными последующие ссылки на этот объект Recordset или Connection при вызовах методов OpenConnection или OpenRecordset. Пока свойство StillExecuting возвращает значение True, ссылки на объект допускаются только для чтения значения свойства StillExecuting. При вызове метода NextRecordset для завершения обработки объекта Recordset свойство StillExecuting получает значение True во время загрузки следующего набора записей.
Для прекращения выполнения текущей задачи следует вызвать метод Cancel.
Пример
Следующая программа использует свойство StillExecuting и метод Cancel для асинхронного открытия объекта Connection.
Sub CancelConnectionX() Dim wrkMain As Workspace Dim conMain As Connection Dim sngTime As Single Set wrkMain = CreateWorkspace("ODBCWorkspace", "admin", "", dbUseODBC) ' Открывает асинхронное подключение. Set conMain = wrkMain.OpenConnection("Publishers", dbDriverNoPrompt + dbRunAsync, False, "ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers") sngTime = Timer ' Ожидает пять секунд. Do While Timer - sngTime < 5 Loop ' Если подключение не установлено, запрашивает пользователя, ' следует ли продлить ожидание. Если нет команды на продление, ' отменяет подключение и осуществляет выход из процедуры. Do While conMain.StillExecuting If MsgBox("Подключение не установлено. Продлить ожидание?", vbYesNo) = vbNo Then conMain.Cancel MsgBox "Подключение отменено!" wrkMain.Close Exit Sub End If Loop With conMain ' Использует объект Connection с именем conMain. .Close End With wrkMain.Close End Sub