Стосується
|
Об’єкт 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