Отнася се за
|
Обект 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 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
Следващият код ви помага да определите какъв тип запис е върнат от свойството Набор записи при различни условия.
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