Шаг 67 - Метод CreateQueryDef

Описание
Создает новый объект QueryDef в указанном объекте Connection или Database.

Set запрос = объект.CreateQueryDef (имя, строкаSQL)

Параметры
запрос
Объектная переменная, представляющая создаваемый объект QueryDef.
объект
Объектная переменная, представляющая открытый объект Connection или Database, который содержит новый объект QueryDef.
имя
Необязательный. Выражение или переменная типа Variant (подтип String), содержащая уникальное имя нового объекта QueryDef.
строкаSQL
Необязательный. Выражение или переменная типа Variant (подтип String), представляющая инструкцию SQL, которая определяет объект QueryDef. Если данный аргумент будет опущен, то можно определить объект QueryDef путем задания значения его свойства SQL до или после добавления созданного объекта в семейство.

Замечания
В рабочей области ядра Microsoft Jet, если при создании объекта QueryDef для имени задано любое значение, кроме пустой строки, то созданный объект QueryDef будет автоматически добавлен в семейство QueryDefs. В рабочей области ODBCDirect объекты QueryDef всегда являются временными.
В рабочей области ODBCDirect аргумент строкаSQL может задавать как инструкцию SQLТ так и сохраненную процедуру Microsoft SQL Server вместе с ее параметрами.
Если объект, определяемый аргументом имя, уже является компонентом семейства QueryDefs, возникает ошибка выполнения. Пользователь имеет возможность создать временный объект QueryDef, задавая пустую строку в аргументе имя при вызове метода CreateQueryDef. Тот же результат будет получен, если задать пустую строку как значение свойства Name нового объекта QueryDef. Временные объекты QueryDef полезны в ситуации, когда требуется повторно выполнять динамические инструкции SQL без создания постоянных объектов в семействе QueryDefs. Временный объект QueryDef нельзя добавить ни в одно семейство, поскольку пустая строка не является допустимым значением имени постоянного объекта QueryDef. Для созданного объекта QueryDef всегда имеется возможность задать значения свойств Name и SQL, после чего данный объект будет добавлен в семейство QueryDefs.
Для выполнения инструкции SQL, содержащейся в объекте QueryDef, следует вызвать метод Execute или OpenRecordset.
Использование объектов QueryDef является лучшим способом выполнения запросов к серверу SQL в базах данных ODBC.
Для удаления объекта QueryDef из семейства QueryDefs в базе данных Microsoft Jet следует применить метод Delete к семейству. В базе данных ODBCDirect следует вызвать метод Close для объекта QueryDef.

Пример
Следующая программа использует метод CreateQueryDef для создания и выполнения как временного, так и постоянного объекта QueryDef. Для выполнения этой процедуры требуется функция GetrstTemp.

Sub CreateQueryDefX()

	Dim dbsNorthwind As Database
	Dim qdfTemp As QueryDef
	Dim qdfNew As QueryDef
	Set dbsNorthwind = OpenDatabase("Борей.mdb")
	With dbsNorthwind
		' Создает временный объект QueryDef.
		Set qdfTemp = .CreateQueryDef("", "SELECT * FROM Сотрудники")
		' Открывает объект Recordset и печатает отчет.
		GetrstTemp qdfTemp
		' Создает постоянный объект QueryDef.
		Set qdfNew = .CreateQueryDef("NewQueryDef", "SELECT * FROM Типы")
		' Открывает объект Recordset и печатает отчет.
		GetrstTemp qdfNew
		' Удаляет объект QueryDef, созданный только для демонстрации.
		.QueryDefs.Delete qdfNew.Name
		.Close
	End With

End Sub

Function GetrstTemp(qdfTemp As QueryDef)

	Dim rstTemp As Recordset
	With qdfTemp
		Debug.Print .Name
		Debug.Print "    " & .SQL
		' Открывает объект Recordset для объекта QueryDef.
		Set rstTemp = .OpenRecordset(dbOpenSnapshot)

		With rstTemp
			' Заполняет объект Recordset и печатает число записей.
			.MoveLast
			Debug.Print "    Число записей = " & 	.RecordCount
			Debug.Print
			.Close
		End With
	End With
End Function

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