Шаг 118 - Метод CopyQueryDef

Описание
Возвращает объект QueryDef, являющийся копией объекта QueryDef, который был использован при создании объекта Recordset, представляемого переменной наборЗаписей (только в рабочей области ядра Microsoft Jet).


Параметры
запрос
Объектная переменная, определяющая создаваемую копию объекта QueryDef.
наборЗаписей
Объектная переменная, задающая объект Recordset, созданный для исходного объекта QueryDef.

Замечания
Метод CopyQueryDef используется для создания нового объекта QueryDef, являющегося копией объекта QueryDef, который был использован для создания объекта Recordset.
Если объект QueryDef не был использован при создании данного объекта Recordset, возникает ошибка. Перед вызовом метода CopyQueryDef необходимо открыть объект Recordset с помощью метода OpenRecordset.
Данный метод полезен в ситуации, когда пользователь создает объект Recordset с помощью объекта QueryDef, а затем передает объект Recordset в функцию, в которой должна быть воссоздана эквивалентная инструкция SQL запроса, например, для ее изменения.

Пример
Следующая программа использует метод CopyQueryDef для создания копии объекта QueryDef на основе существующего объекта Recordset, а затем изменяет копию, добавляя предложение в свойство SQL. При создании постоянных объектов QueryDef можно добавлять в значение свойства SQL пробел, точку с запятой или символ перевода строки; но эти лишние символы должны быть удалены перед добавлением в инструкцию SQL любого нового предложения.

Function CopyQueryNew(rstTemp As Recordset, strAdd As String) As QueryDef

	Dim strSQL As String
	Dim strRightSQL As String

	Set CopyQueryNew = rstTemp.CopyQueryDef
	With CopyQueryNew
		' Удаляет лишние символы.
		strSQL = .SQL
		strRightSQL = Right(strSQL, 1)
		Do While strRightSQL = " " Or strRightSQL = ";" Or strRightSQL = Chr(10) Or strRightSQL = vbCr
			strSQL = Left(strSQL, Len(strSQL) - 1)
			strRightSQL = Right(strSQL, 1)
		Loop
		.SQL = strSQL & strAdd
	End With

End Function

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