Описание
Указывает, закончено ли выполнение асинхронной операции (т.е.
вызванной с параметром 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