Platí pro
Access pro Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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    NextEnd 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.CloseEnd 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 IfEnd Sub

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.