Vlastnost Recordset

Platí pro

Objekt ComboBox

Objekt Form

Objekt ListBox

Objekt Report

Vrátí nebo nastaví objekt Recordset rozhraní ADO nebo Recordset rozhraní DAO představující zdroj záznamů pro zadaný formulář, sestavu, ovládací prvek rozevíracího seznamu nebo ovládací prvek pole se seznamem. Pro čtení/zápis.

výraz.Recordset

Výraz je povinný. Musí to být výraz, který vrací 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
Rozšiřte své dovednosti s Office
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

Děkujeme vám za zpětnou vazbu.

Děkujeme vám za váš názor. Vypadá to, že bude užitečné, když vás spojíme s některým z našich agentů z podpory Office.

×