MyTetra Share
Делитесь знаниями!
Свойство Recordset (Набор записей)
03.04.2020
23:04
Текстовые метки: Recordset
Раздел: !Закладки - VBA - Array - Recordset


Свойство Recordset (Набор записей)

Access для Office 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007

Применение


Объект ComboBox


Объект Form


Объект ListBox


Объект Report


Возвращает или задает объект ADO Recordset или DAO Recordset, который представляет собой источник записей для указанной формы, отчета, списка или поля со списком. Значение данного свойства доступно для чтения и записи.


выражение.Recordset


выражение (обязательно). Выражение, возвращающее один из объектов из списка "Применение".

Замечания


Свойство Recordset (Набор записей) возвращает объект набора записей, который является источником данных, просматриваемых в форме, отчете, списке или поле со списком. Если форма основана, например, на запросе, ссылка на свойство Recordset эквивалентна клонированию объекта Recordset с помощью того же запроса. Однако в отличие от использования свойства RecordsetClone (Копия набора записей), назначение в качестве текущей другой записи в наборе записей, возвращаемом свойством Recordset формы, также задает текущую запись этой формы.


Это свойство можно задать только с помощью кода Visual Basic для приложений (VBA).


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


Тип набора записей


Данные SQL


Данные Access


ADO


Чтение и запись


Чтение и запись


DAO


Н/Д


Чтение и запись


В следующем примере выполняется открытие формы, открытие набора записей и привязка формы к набору записей путем указания для свойства Recordset только что созданного объекта Recordset.


Global rstSuppliers As ADODB.Recordset

Sub MakeRW()

DoCmd.OpenForm "Suppliers"Set rstSuppliers = New ADODB.Recordset

rstSuppliers.CursorLocation = adUseClientrstSuppliers.Open "Select * From Suppliers", _CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Set Forms("Suppliers").Recordset = rstSuppliers

End 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 из текущей формы. Затем в окне отладки печатаются имена полей.


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

Next

End 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.Close

End 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 If

End Sub

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования