Шаг 108 - Свойство StillExecuting

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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 21.03.2002