Отнася се за
Обект ComboBox |
Обект Form |
Обект ListBox |
Обект Report |
Връща или задава обект ADO Recordset или DAO Recordset, представящ източник на записи за указания формуляр, отчет, списъчно поле или контрола на разгъващ се списък. Четене/запис.
израз.Recordset
израз Задължително. Израз, който връща един от обектите в списъка "Отнася се за".
Забележки
Свойството Recordset връща обекта набор записи, който предоставя данните, преглеждани във формуляр, отчет, списъчно поле или контрола на разгъващ се списък. Ако формулярът например се базира на заявка, препратката към свойството Recordset е еквивалентна на клониране на обект Recordset с помощта на същата заявка. За разлика от използването на свойството RecordsetClone обаче, промяната на това кой е текущият запис, връщан от свойството на формуляра Recordset, също задава текущия запис на формуляра.
Това свойство е налично само с помощта на код за Visual Basic for Applications (VBA).
Поведението при четене/запис на свойството Набор записи се определя от типа на набора записи (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
Използване на свойството Набор записи:
-
За свързване на няколко на брой формуляри към общ набор от данни. Това позволява синхронизиране на множество формуляри. Например
Set Me.Recordset = Forms!Form1.Recordset
-
За да използвате с обект Набор записи методи, които не се поддържат директно във формуляри. Например можете да използвате свойството Recordset за намиране на запис с методи ADO Find или DAO Find в диалогов прозорец по избор.
-
За да обхванете в транзакция (чието действие може да бъде анулирано) набор от редакционни промени, засягащи множество формуляри.
Промяната на свойство Набор записи на формуляр също може да промени свойствата 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
Следващият код ви помага да определите какъв тип запис е върнат от свойството Набор записи при различни условия.
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