что такое recordset access vba
Свойство ListBox.Recordset (Доступ)
Возвращает или задает объект ADO Recordset или DAO Recordset, который представляет источник записи для указанного объекта. Объект Read/write.
Синтаксис
выражения. Recordset
выражение Переменная, представляющие объект ListBox.
Заметки
Свойство Recordset возвращает объект Recordset, который предоставляет данные, просматриваемые в форме, отчете, окне управления списком или комбо-окне управления. Если форма основана на запросе, например, ссылка на свойство Recordset эквивалентна клонированию объекта Recordset с помощью того же запроса. Однако, в отличие от использования свойства RecordsetClone, изменение текущей записи в наборе записей, возвращаемом свойством Recordset формы, также задает текущую запись формы.
Поведение чтения и записи свойства Recordset определяется типом наборов записей (ADO или DAO) и типом данных (Access или SQL), содержащихся в наборе записей, идентифицированных свойством.
Тип recordset | На основе SQL данных | На основе данных, хранимой в движке базы данных Access |
---|---|---|
ADO | Чтение и запись | Чтение и запись |
DAO | Н/Д | Чтение и запись |
В следующем примере открывается форма, открывается набор записей, а затем привязывает форму к набору записей, установив свойство Recordset формы к вновь созданному объекту Recordset.
Используйте свойство Recordset для:
Используйте методы с объектом Recordset, который не поддерживается напрямую в формах. Например, свойство Recordset можно использовать с помощью методов ADO Find или DAO Find в настраиваемом диалоговом окте для поиска записи.
Оберните транзакцию (которую можно откатать) вокруг набора изменений, влияющих на несколько форм.
Изменение свойства Recordset формы также может изменить свойства RecordSource, RecordsetType и RecordLocks. Кроме того, некоторые свойства, связанные с данными, могут быть переопределены, например свойства Filter, FilterOn, OrderBy и OrderByOn.
Привязать несколько форм к общему набору данных. Это позволяет синхронизировать несколько форм. Пример.
Если форма привязана к набору записей, при использовании команды Filter by Form возникает ошибка.
Пример
В следующем примере свойство Recordset создает новую копию объекта Recordset из текущей формы, а затем печатает имена полей в окне Debug.
В следующем примере свойство Recordset и объект Recordset используются для синхронизации наборов записей с текущей записью формы. Когда имя компании выбирается из комбо-окна, метод FindFirst используется для поиска записи для этой компании, в результате чего форма отображает найденную запись.
Следующий код помогает определить, какой тип наборов записей возвращается свойством Recordset в различных условиях.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Свойство Form.Recordset (Access)
Возвращает или задает объект ADO Recordset или DAO Recordset, который представляет источник записи для указанного объекта. Объект Read/write.
Синтаксис
выражения. Recordset
выражение: переменная, представляющая объект Form.
Заметки
Свойство Recordset возвращает объект Recordset, который предоставляет данные, просматриваемые в форме, отчете, окне управления списком или комбо-окне управления. Если форма основана на запросе, например, ссылка на свойство Recordset эквивалентна клонированию объекта Recordset с помощью того же запроса. Однако, в отличие от использования свойства RecordsetClone, изменение текущей записи в наборе записей, возвращаемом свойством Recordset формы, также задает текущую запись формы.
Поведение чтения и записи свойства Recordset определяется типом наборов записей (ADO или DAO) и типом данных (Access или SQL), содержащихся в наборе записей, идентифицированных свойством.
Тип recordset | На основе SQL данных | На основе данных, хранимой в движке базы данных Access |
---|---|---|
ADO | Чтение и запись | Чтение и запись |
DAO | Н/Д | Чтение и запись |
В следующем примере открывается форма, открывается набор записей, а затем привязывает форму к набору записей, установив свойство Recordset формы к вновь созданному объекту Recordset.
Используйте свойство Recordset для:
Используйте методы с объектом Recordset, который не поддерживается напрямую в формах. Например, свойство Recordset можно использовать с помощью методов ADO Find или DAO Find в настраиваемом диалоговом окте для поиска записи.
Оберните транзакцию (которую можно откатать) вокруг набора изменений, влияющих на несколько форм.
Изменение свойства Recordset формы также может изменить свойства RecordSource, RecordsetType и RecordLocks. Кроме того, некоторые свойства, связанные с данными, могут быть переопределены, например свойства Filter, FilterOn, OrderBy и OrderByOn.
Привязать несколько форм к общему набору данных. Это позволяет синхронизировать несколько форм. Пример.
Если форма привязана к набору записей, при использовании команды Filter by Form возникает ошибка.
Пример
В следующем примере свойство Recordset создает новую копию объекта Recordset из текущей формы, а затем печатает имена полей в окне Debug.
В следующем примере свойство Recordset и объект Recordset используются для синхронизации наборов записей с текущей записью формы. Когда имя компании выбирается из комбо-окна, метод FindFirst используется для поиска записи для этой компании, в результате чего форма отображает найденную запись.
Следующий код помогает определить, какой тип наборов записей возвращается свойством Recordset в различных условиях.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Объект Recordset (DAO)
Применяется для: Access 2013, Office 2013
Объект Recordset представляет записи в базовой таблице или записи, получаемые в результате выполнения запросов.
Комментарии
Вы можете использовать Recordset, чтобы управлять данными в базе данных на уровне записей. Если вы используете интерфейс DAO, вы можете управлять данными практически полностью с помощью объектов Recordset. Все объекты Recordset построены с использованием записей (строки) и полей (столбцы). Существует пять типов объектов Recordset:
Объект Recordset табличного типа — представление в коде базовой таблицы, которое вы можете использовать для добавления, изменения и удаления записей из таблицы одной базы данных (только для рабочей области Microsoft Access).
Объект Recordset типа Dynaset — результат запроса, который может обновлять записи. Объект Recordset типа Dynaset является динамическим набором записей, которые можно использовать для добавления, изменения и удаления записей из базовой таблицы базы данных или таблиц. Объект Recordset типа Dynaset может содержать поля из одной или нескольких таблиц в базе данных. Этот тип соответствует курсору набор ключей ODBC.
Объект Recordset типа моментальный снимок — статическая копия набора записей, которую можно использовать для поиска данных или создания отчетов. Объект Recordset типа моментальный снимок может содержать поля из одной или нескольких таблиц в базе данных, но не может обновляться. Этот тип соответствует статическому курсору ODBC.
Объект Recordset однонаправленного типа — аналогичен моментальному снимку с единственной разницей в отсутствии курсора. Вы можете только прокручивать записи вперед. Это повышает производительность в ситуациях, где достаточно только один раз просмотреть итоговый набор. Этот тип соответствует однонаправленному курсору ODBC.
Динамический тип объекта Recordset — набор результатов запроса, получаемый из одной или нескольких базовых таблиц, в котором вы можете добавить, изменить или удалить записи из возвращающего строку запроса. Кроме того, записи, которые добавляют, удаляют или изменяют другие пользователи в базовой таблице, также будут отображаться в вашем объекте Recordset. Этот тип соответствует динамическому курсору ODBC (только для рабочих областей ODBCDirect).
Рабочие области ODBCDirect не поддерживаются в Microsoft Access 2013. Используйте ADO, если вы хотите получить доступ к внешним источникам данных без использования ядра СУБД Microsoft Access.
Вы можете выбрать тип объекта Recordset, который вы хотите создать, с помощью аргумента типа метода OpenRecordset.
В рабочей области Microsoft Access, если не задан тип, интерфейс DAO пытается создать тип объекта Recordset с наиболее широким набором функций, начиная с табличного. Если этот тип не поддерживается, интерфейс DAO пытается создать объект типа Dynaset, затем моментальный снимок и, наконец, однонаправленный тип объекта Recordset.
В рабочей области ODBCDirect, если не задан тип, интерфейс DAO пытается создать тип объекта Recordset с самой быстрой реакцией на запрос, начиная с однонаправленного типа. Если этот тип не поддерживается, интерфейс DAO пытается создать объект типа мгновенный снимок, затем dynaset и, наконец, динамический тип объекта Recordset.
При создании объекта Recordset с помощью несвязанного объекта TableDef в рабочей области Microsoft Access, создается табличный тип объекта Recordset. Только объекты Recordset динамического типа или типа моментальный снимок могут создаваться со связанными таблицами или таблицами в базах данных ODBC с подключенным ядром СУБД Microsoft Access.
Объект Recordset автоматически добавляется в коллекцию Recordsets при открытии объекта и автоматически удаляется при его закрытии.
Если вы используете переменные для представления объекта Recordset и объекта Database, который содержит объект Recordset, убедитесь, что переменные принадлежат к той же области или имеют то же время существования. Например, если вы объявляете публичную переменную, которая определяет объект Recordset, убедитесь, что переменная, которая представляет Database с Recordset, также является публичной, или объявлена с помощью процедуры Sub или Function с применением ключевого слова Static.
Вы можете создать любое количество переменных объекта Recordset при необходимости. Различные объекты Recordset могут получать доступ к одним таблицам, запросам и полям без возникновения конфликта.
Типы Dynaset, моментальный снимок и однонаправленный для объекта Recordset хранятся в локальной памяти. Если в локальной памяти для хранения данных недостаточно места, ядро СУБД Microsoft Access сохраняет дополнительные данные в дисковом пространстве TEMP. Если свободное место заканчивается, возникает перехватываемая ошибка.
По умолчанию для объекта Recordset используется коллекция Поля, а используемым по умолчанию свойством объекта Поле является свойство Значение. Используйте эти настройки по умолчанию для упрощения вашего кода.
При создании объекта Recordset текущая запись расположена по направлению к первой записью, если есть какие-либо записи. Если записи отсутствуют, свойство RecordCount имеет значение 0, а свойство BOF и EOF имеют значение ИСТИНА.
Вы можете использовать методы MoveNext, MovePrevious, MoveFirst и MoveLast, чтобы изменить положение текущей записи. Объекты Recordset однонаправленного типа поддерживают только метод MoveNext. При использовании методов перемещения для перехода к каждой записи (или «прогулки» по объекту Recordset), вы можете использовать свойства BOF и EOF, чтобы проверить начало или конец объекта Recordset.
Для объектов Recordset типа dynaset и моментальный список в рабочей области Microsoft Access можно также использовать методы поиска, например FindFirst, чтобы найти определенную запись на основе критериев. Если запись не найдена, свойство NoMatch получает значение ИСТИНА. Для табличного типа объектов Recordset можно сканировать записи, используя метод Seek.
Свойство Type указывает тип созданного объекта Recordset, а свойство Updatable указывает на то, можете ли вы изменить записи объекта.
Сведения о структуре базовой таблицы, например, имена и типы данных каждого объекта Field и любых объектов Index хранятся в объекте TableDef.
Чтобы сослаться на объект Recordset в коллекции по его порядковому номеру или по его свойству Name, используйте любую из следующих синтаксических форм:
Recordsets(0)
Recordsets(«name»)
Recordsets![name]
Вы можете открыть объект Recordset из одного источника данных или базы данных несколько раз, создавая дублирующие имена в коллекции Recordsets. Вы должны назначить объекты Recordsets для переменных объекта и ссылаться на них по имени переменной.
Пример
В этом примере показаны объекты Recordset и коллекция Recordset с помощью открытия четырех разных типов Recordsets, перечисления коллекции Recordsets для текущего объекта Database и перечисления коллекции Properties для каждого объекта Recordset.
В этом примере используется метод OpenRecordset для открытия пяти разных объектов Recordset и отображения их содержимого. Процедура OpenRecordsetOutput является обязательной для запуска этой процедуры.
В этом примере открывается динамический тип объекта Recordset и перечисляются ее записи.
В этом примере открывается тип dynaset объекта Recordset и отображаются уровни обновления его полей.
В этом примере открывается однонаправленный тип объекта Recordset, демонстрируются характеристики только для чтения и пошаговые инструкции для объекта Recordset и метода MoveNext.
В этом примере открывается тип моментальный снимок объекта Recordset и демонстрируются характеристики только для чтения.
В этом примере открывается табличный тип объекта Recordset, задается его свойство Index и перечисляются его записи.
В приведенном ниже примере показано, как использовать метод Seek для поиска записи в связанной таблице.
В приведенном ниже примере показано, как открыть объект Recordset на основании запроса параметра.
В приведенном ниже примере показано, как открыть объект Recordset на основании таблицы или запроса.
В приведенном ниже примере показано, как открыть объект Recordset на основании SQL оператора.
В приведенном ниже примере показано, как использовать методы FindFirst и FindNext для поиска записи в Recordset.
В приведенном ниже примере показано, как скопировать результаты запроса на лист в новой книге Microsoft Excel.
Свойство ComboBox.Recordset (Доступ)
Возвращает или задает объект ADO Recordset или DAO Recordset, который представляет источник записи для указанного объекта. Объект Read/write.
Синтаксис
выражения. Recordset
выражение Переменная, представляющие объект ComboBox.
Заметки
Свойство Recordset возвращает объект Recordset, который предоставляет данные, просматриваемые в форме, отчете, окне управления списком или комбо-окне управления. Если форма основана на запросе, например, ссылка на свойство Recordset эквивалентна клонированию объекта Recordset с помощью того же запроса. Однако, в отличие от использования свойства RecordsetClone, изменение текущей записи в наборе записей, возвращаемом свойством Recordset формы, также задает текущую запись формы.
Поведение чтения и записи свойства Recordset определяется типом наборов записей (ADO или DAO) и типом данных (Access или SQL), содержащихся в наборе записей, идентифицированных свойством.
Тип recordset | На основе SQL данных | На основе данных, хранимой в движке базы данных Access |
---|---|---|
ADO | Чтение и запись | Чтение и запись |
DAO | Н/Д | Чтение и запись |
В следующем примере открывается форма, открывается набор записей, а затем привязывает форму к набору записей, установив свойство Recordset формы к вновь созданному объекту Recordset.
Используйте свойство Recordset для:
Используйте методы с объектом Recordset, который не поддерживается напрямую в формах. Например, свойство Recordset можно использовать с помощью методов ADO Find или DAO Find в настраиваемом диалоговом окте для поиска записи.
Оберните транзакцию (которую можно откатать) вокруг набора изменений, влияющих на несколько форм.
Изменение свойства Recordset формы также может изменить свойства RecordSource, RecordsetType и RecordLocks. Кроме того, некоторые свойства, связанные с данными, могут быть переопределены, например свойства Filter, FilterOn, OrderBy и OrderByOn.
Привязать несколько форм к общему набору данных. Это позволяет синхронизировать несколько форм. Пример.
Если форма привязана к набору записей, при использовании команды Filter by Form возникает ошибка.
Пример
В следующем примере свойство Recordset создает новую копию объекта Recordset из текущей формы, а затем печатает имена полей в окне Debug.
В следующем примере свойство Recordset и объект Recordset используются для синхронизации наборов записей с текущей записью формы. Когда имя компании выбирается из комбо-окна, метод FindFirst используется для поиска записи для этой компании, в результате чего форма отображает найденную запись.
Следующий код помогает определить, какой тип наборов записей возвращается свойством Recordset в различных условиях.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Свойство Набор записей(Recordset)
Применение
Возвращает или задает объект ADO Recordset или DAO Recordset, который представляет собой источник записей для указанной формы, отчета, списка или поля со списком. Значение данного свойства доступно для чтения и записи.
выражение — обязательный аргумент. Выражение, которое возвращает один из объектов в списке «Применяется к».
Замечания
Свойство Recordset (Набор записей) возвращает объект набора записей, который является источником данных, просматриваемых в форме, отчете, списке или поле со списком. Если форма основана, например, на запросе, ссылка на свойство Recordset эквивалентна клонированию объекта Recordset с помощью того же запроса. Однако в отличие от использования свойства RecordsetClone (Копия набора записей), назначение в качестве текущей другой записи в наборе записей, возвращаемом свойством Recordset формы, также задает текущую запись этой формы.
Это свойство можно задать только с помощью кода Visual Basic для приложений (VBA).
Доступность для чтения и записи свойства Recordset определяется типом набора записей (ADO или DAO) и типом данных (Access или SQL), которые содержатся в нем.
Тип набора записей
В следующем примере выполняется открытие формы, открытие набора записей и привязка формы к набору записей путем указания для свойства Recordset только что созданного объекта Recordset.
Global rstSuppliers As ADODB.RecordsetSub MakeRW()DoCmd.OpenForm «Suppliers»Set rstSuppliers = New ADODB.RecordsetrstSuppliers.CursorLocation = adUseClientrstSuppliers.Open «Select * From Suppliers», _CurrentProject.Connection, adOpenKeyset, adLockOptimisticSet Forms(«Suppliers»).Recordset = rstSuppliersEnd Sub
Свойство Набор записей служит для следующих целей:
Связывание нескольких форм с общим набором данных. Это позволяет синхронизировать несколько форм. Например:
Set Me.Recordset = Forms!Form1.Recordset
Использование методов, не имеющих непосредственной поддержки в формах, вместе с объектом Recordset. Например, свойство Recordset можно использовать вместе с методами ADO Find или DAO Find в пользовательском диалоговом окне для поиска записи.
Добавление в транзакцию (для которой можно выполнить откат) набора изменений, влияющих на несколько форм.
Изменение свойства Recordset также может привести к изменению свойств RecordSource (Источник записей), RecordsetType (Тип набора записей) и RecordLocks (Блокировка записей). Кроме того, некоторые связанные с данными свойства могут быть переопределены, например свойства Filter (Фильтр), FilterOn (Фильтр включен), OrderBy (Порядок сортировки) и OrderByOn (Сортировка включена).
Вызов метода Requery набора записей формы (например, Forms(0).Recordset.Requery ) может привести к превращению формы в свободную. Чтобы обновить данные в форме, привязанной к набору записей, следует задать для свойства RecordSource (Источник записей) формы само это свойство ( Forms(0).RecordSource = Forms(0).RecordSource ).
Если форма привязана к набору записей, при использовании команды «Фильтр по форме» возникает ошибка.
Пример
В следующем примере свойство Recordset используется для создания копии объекта Recordset из текущей формы. Затем в окне отладки печатаются имена полей.
В следующем примере свойство Recordset и объект Recordset используются для синхронизации набора записей с текущей записью формы. При выборе в поле со списком названия организации для поиска ее записи используется метод FindFirst, вызывающий отображение найденной записи в форме.
Следующий код помогает определить, какой тип набора записей возвращается свойством Recordset при разных условиях.