Свойство Form.Recordset (Access)
Возвращает или задает объект ADO Recordset или DAO Recordset , представляющий источник записи для указанного объекта. Чтение и запись объекта.
Синтаксис
expression. Набора записей
выражение: переменная, представляющая объект Form.
Замечания
Свойство Recordset возвращает объект Recordset , который предоставляет данные, просматриваемые в форме, отчете, элементе управления "Список" или элементе управления со списком. Например, если форма основана на запросе, ссылка на свойство Recordset эквивалентна клонирования объекта Recordset с помощью того же запроса. Однако, в отличие от использования свойства RecordsetClone , изменение текущей записи в наборе записей, возвращаемом свойством Recordset формы, также задает текущую запись формы.
Поведение чтения и записи свойства 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 = adUseClient
rstSuppliers.Open "Select * From Suppliers", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set Forms("Suppliers").Recordset = rstSuppliers
End Sub
Используйте свойство Recordset , чтобы:
Используйте методы с объектом Recordset , которые не поддерживаются непосредственно в формах. Например, можно использовать свойство Recordset с методами ADO Find или DAO Find в настраиваемом диалоговом окне для поиска записи.
Обведите транзакцию (которую можно откатить) вокруг набора правок, влияющих на несколько форм.
Изменение свойства Recordset формы также может изменить свойства RecordSource, RecordsetType и RecordLocks . Кроме того, некоторые связанные с данными свойства могут быть переопределены, например свойства FilterOn, OrderBy и OrderByOn.
Вызов метода Requery для набора записей формы (например, ) может привести к тому,
Forms(0).Recordset.Requery
что форма станет неограниченной. Чтобы обновить данные в форме, привязанной к набору записей, задайте для свойства RecordSource формы значение :Forms(0).RecordSource = Forms(0).RecordSource
.Привязка нескольких форм к общему набору данных. Это позволяет синхронизировать несколько форм. Например:
Set Me.Recordset = Forms!Form1.Recordset
Примечание.
Если форма привязана к набору записей, при использовании команды Фильтровать по форме возникает ошибка.
Пример
В следующем примере свойство 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
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.