Platí pro
Objekt ComboBox |
Objekt Form |
Objekt ListBox |
Objekt Report |
Vrátí nebo nastaví objekt ADO Recordset nebo DAO Recordset představující Zdroj záznamů pro zadaný formulář, sestavu, ovládací prvek seznam nebo pole se seznamem. Čtení/zápis
výraz.Recordset
Výraz Povinný argument. Výraz, který vrátí jeden z objektů v seznamu Platí pro.
Poznámky
Vlastnost Recordset vrací objekt sady záznamů poskytující data, která se prochází ve formuláři, sestavě, ovládacím prvku rozevíracího seznamu nebo ovládacím prvku pole se seznamem. Pokud je formulář například založený na dotazu, je odkaz na vlastnost Recordset ekvivalentní klonování objektu Recordset pomocí stejného dotazu. Na rozdíl od použití vlastnosti RecordsetClone se ale při změně záznamu, který je aktuální v sadě záznamů vrácené vlastností Recordset formuláře, zároveň nastaví aktuální záznam formuláře.
Tato vlastnost je dostupná jenom pomocí kódu jazyka VBA (Visual Basic for Applications).
Chování čtení a zápisu vlastnosti Recordset je určené typem sady záznamů (ADO nebo DAO) a typem dat (Access nebo SQL) obsažených v sadě záznamů identifikované touto vlastností.
Typ sady záznamů |
Na základě dat SQL |
Na základě dat Accessu |
ADO |
Čtení/zápis |
Čtení/zápis |
DAO |
Nejde použít |
Čtení/zápis |
Následující příklad otevře formulář, otevře sadu záznamů a následně vytvoří vazbu formuláře na sadu záznamů nastavením vlastnosti Recordset formuláře na nově vytvořený objekt 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
Pomocí vlastnosti Recordset můžete:
-
Vytvořit vazbu několika formulářů na společnou sadu dat. Tento postup umožňuje synchronizaci několika formulářů. Příklad:
Set Me.Recordset = Forms!Form1.Recordset
-
Použít s objektem Recordset metody, které nejsou u formulářů přímo podporované. Vlastnost Recordset můžete například použít s metodami Find rozhraní ADO nebo Find rozhraní DAO k hledání záznamu ve vlastním dialogu.
-
Zabalit transakci (kterou lze vrátit zpátky) související s množinou úprav ovlivňující několik formulářů.
Při změně vlastnosti Recordset formuláře může dojít také ke změně vlastností RecordSource, RecordsetType a RecordLocks. Zároveň se můžou přepsat některé vlastnosti související s daty, například Filter, FilterOn, OrderBy a OrderByOn.
Volání metody Requery sady záznamů formuláře (například Forms(0).Recordset.Requery) může způsobit zrušení vazby tohoto formuláře. Pokud chcete aktualizovat data ve formuláři vázaném na sadu záznamů, nastavte vlastnost RecordSource formuláře samu na sebe (Forms(0).RecordSource = Forms(0).RecordSource).
Pokud je formulář vázaný na sadu záznamů, při použití příkazu Filtrovat podle formuláře dojde k chybě.
Příklad
V následujícím příkladu se vlastnost Recordset používá k vytvoření nové kopie objektu Recordset z aktuálního formuláře a zobrazení názvů polí v okně ladění.
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
V dalším příkladu se vlastnost Recordset a objekt Recordset používá k synchronizaci sady záznamů s aktuálním záznamem formuláře. Při výběru názvu firmy v poli se seznamem se použije metoda FindFirst k vyhledání záznamu této firmy, což způsobí, že se na formuláři zobrazí nalezený záznam.
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
Následující kód pomáhá určit, jaký typ sady záznamů vrátí vlastnost Recordset za různých podmínek.
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