Описание
Задает или возвращает значение, указывающее, должен ли запрос перед его выполнением быть подготовлен на сервере как временная сохраненная процедура с помощью функции SQLPrepare интерфейса API ODBC или выполняться непосредственно с помощью функции SQLExecDirect интерфейса API ODBC (только в рабочей области ODBCDirect).
Значение
Задаваемое или возвращаемое значение имеет тип данных Long и определяется с помощью одной из следующих констант:
Замечания
Свойство Prepare используют либо для указания создания на сервере из запроса временной сохраненной процедуры с ее последующим выполнением, либо для указания прямого выполнения запроса. Свойство Prepare по умолчанию получает значение dbQPrepare. Однако можно задать для этого свойства значение dbQUnprepare, исключающее предварительную подготовку запроса. В последнем случае запрос выполняется с помощью функции SQLExecDirect программного интерфейса (API).
Создание сохраненной процедуры может замедлить выполнение первоначальной операции, но ускоряет выполнение всех последующих обращений к запросу. Однако некоторые запросы невозможно выполнить в виде сохраненной процедуры. В этом случае следует задавать для свойства Prepare значение dbQUnprepare.
Если в свойстве Prepare задан режим подготовки запроса dbQPrepare, эта настройка может быть преодолена при выполнении запроса путем указания значения dbExecDirect в аргументе параметры метода Execute.
Функция программного интерфейса ODBC SQLPrepare вызывается после задания значения свойства SQL объектов доступа к данным (DAO). Таким образом, при необходимости повысить быстродействие за счет использования параметра dbQUnprepare необходимо задать значение свойства Prepare до задания значения свойства SQL.
Пример
Следующая программа использует свойство Prepare для указания прямого выполнения запроса без предварительного создания сохраненной процедуры на сервере.
Sub PrepareX() Dim wrkODBC As Workspace Dim conPubs As Connection Dim qdfTemp As QueryDef Dim rstTemp As Recordset ' Создает объект Workspace ODBCDirect и открывает ' объект Connection. Set wrkODBC = CreateWorkspace("", "admin", "", dbUseODBC) Set conPubs = wrkODBC.OpenConnection("Publishers", , , "ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers") Set qdfTemp = conPubs.CreateQueryDef("") With qdfTemp ' Этот запрос будет выполнен только один раз, поэтому ' необходимо вызвать функцию SQLExecDirect API ODBC. ' Без задания данного свойства перед определением ' свойства SQL функция SQLPrepare API ODBC все равно ' будет выызвана, что приведет к потере всего выигрыша ' в быстродействии. .Prepare = dbQUnprepare .SQL = "UPDATE roysched " & "SET royalty = royalty * 2 " & "WHERE title_id LIKE 'BU____' OR " & "title_id LIKE 'PC____'" .Execute End With Debug.Print "Query results:" ' Открывает набор измененных записей. Set rstTemp = conPubs.OpenRecordset( "SELECT * FROM roysched " & "WHERE title_id LIKE 'BU____' OR " & "title_id LIKE 'PC____'") ' Отображает набор записей. With rstTemp Do While Not .EOF Debug.Print , !title_id, !lorange, !hirange, !royalty .MoveNext Loop .Close End With conPubs.Close wrkODBC.Close End Sub