Застосовується до
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Стосується

Об’єкт ComboBox

Об’єкт Form

Об’єкт ListBox

Об’єкт Report

Повертає або задає об’єкт ADO Recordset або DAO Recordset, який представляє джерело записів указаної форми, звіту, елемента керування "Список" чи "Поле зі списком". Читання й записування.

вираз.Recordset

expression — обов’язковий аргумент. Вираз, який повертає один з об'єктів у списку "Застосовується до".

Примітки

Властивість Recordset повертає об’єкт Recordset, який надає дані з форми, звіту, елемента керування "Список" чи "Поле зі списком". Якщо форму створено на основі запиту, посилання на властивість Recordset, наприклад, рівносильне клонуванню об’єкта Recordset за допомогою того самого запиту. Проте на відміну від властивості RecordsetClone, якщо змінити запис, який має повернути властивість Recordset форми з набору, установлюється також поточний запис форми.

Цю властивість можна встановити лише за допомогою коду Visual Basic for Applications (VBA).

Поведінка читання та записування властивості Recordset визначається типом набору записів (ADO або DAO) і типом даних (Access або SQL), збережених у наборі, визначеному властивістю.

Тип набору записів

На основі даних SQL

На основі даних Access

ADO

Читання й записування

Читання й записування

DAO

Н/Д

Читання й записування

Приклад нижче відкриває форму й набір даних, а потім зв’язує їх (створеному об’єкту 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

Використання властивості Recordset:

  • Зв’язує кілька форм із загальним набором даних. Це дає змогу синхронізувати кілька форм. Наприклад:

    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 із поточної форми, а потім надрукувати імена полів у вікні налагодження.

Sub Print_Field_Names()    Dim rst As DAO.Recordset, intI As Integer    Dim fld As Field    Set rst = Me.Recordset    For Each fld in rst.Fields        ' Print field names.        Debug.Print fld.Name    NextEnd Sub

У наступному прикладі властивість Recordset і об'єкт Recordset використовуються для синхронізації набору записів із поточним записом форми. Якщо назву компанії вибрано з поля зі списком, метод FindFirst використовується, щоб знайти запис для цієї компанії, що призводить до відображення знайденого запису у формі.

Sub SupplierID_AfterUpdate()    Dim rst As DAO.Recordset    Dim strSearchName As String    Set rst = Me.Recordset    strSearchName = CStr(Me!SupplierID)    rst.FindFirst "SupplierID = " & strSearchName    If rst.NoMatch Then        MsgBox "Record not found"    End If    rst.CloseEnd Sub

Код нижче допомагає визначити тип набору даних, повернутого властивістю Recordset з урахуванням різних умов.

Sub CheckRSType()    Dim rs as Object    Set rs=Forms(0).Recordset    If TypeOf rs Is DAO.Recordset Then        MsgBox "DAO Recordset"    ElseIf TypeOf rs is ADODB.Recordset Then        MsgBox "ADO Recordset"    End IfEnd Sub

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.