Описание
Возвращает объект 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