Właściwość Recordset

Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Dotyczy

Obiekt ComboBox
Obiekt Form
Obiekt ListBox
Obiekt Report

Zwraca lub ustawia obiekt Recordset (Zestaw rekordów ) modelu ADO lub obiekt Recordset (Zestaw rekordów ) modelu DAO reprezentujący źródło rekordów dla określonego formularza, raportu, kontrolki pola listy lub kontrolki pola kombi. Właściwość do odczytu i zapisu.

wyrażenie.Recordset

Wyrażenie Wymagane. Wyrażenie zwracające jeden z obiektów na liście Dotyczy.

Spostrzeżenia

Właściwość Recordset (Zestaw rekordów) zwraca zestaw rekordów, który dostarcza dane przeglądane w formularzu, raporcie, kontrolce pola listy lub kontrolce pola kombi. Jeśli na przykład formularz jest oparty na zapytaniu, odwołanie się do właściwości Recordset (Zestaw rekordów) jest równoznaczne z klonowaniem obiektu Recordset (Zestaw rekordów) przy użyciu tego samego zapytania. Jednak w przeciwieństwie do użycia właściwości RecordsetClone, zmiana tego, który rekord jest rekordem bieżącym w zestawie rekordów zwracanym przez właściwość formularza Recordset (Zestaw rekordów), także ustawia bieżący rekord formularza.

Ta właściwość jest dostępna tylko przy użyciu kodu języka Visual Basic for Applications (VBA).

Funkcja odczytu/zapisu właściwości Recordset (Zestaw rekordów) jest określona przez typ zestawu rekordów (model ADO lub DAO) i typ danych (Access lub SQL) zawartych w zestawie rekordów zidentyfikowanych przez właściwość.

Typ zestawu rekordów W oparciu o dane SQL W oparciu o dane Access
ADO Właściwość do odczytu i zapisu Właściwość do odczytu i zapisu
DAO Nie dotyczy Właściwość do odczytu i zapisu

W poniższym przykładzie zostaje otwarty formularz oraz zestaw rekordów, a następnie formularz zostaje powiązany z zestawem rekordów poprzez ustawienie właściwości formularza Recordset (Zestaw rekordów) na nowo utworzony obiekt Recordset (Zestaw rekordów).

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

Użyj właściwości Recordset (Zestaw rekordów), aby:

  • Powiązać wiele formularzy we wspólnym zestawie danych. Pozwala to na synchronizację wielu formularzy. Na przykład:
    Set Me.Recordset = Forms!Form1.Recordset
  • Używać metod wykorzystujących obiekt Recordset (Zestaw rekordów), które nie są bezpośrednio obsługiwane w formularzach. Na przykład możesz wykorzystać właściwość Recordset (Zestaw rekordów) w metodzie Find modelu ADO lub metodzie Find modelu DAO w niestandardowym oknie dialogowym do wyszukiwania rekordów.
  • Zawinąć transakcję (która może być wycofana) wokół zestawu zmian mających wpływ na wiele formularzy.

Zmiana właściwości formularza Recordset (Zestaw rekordów) może także zmienić właściwości RecordSource (ŹródłoRekordów), RecordsetType (TypZestawuRekordów) oraz RecordLocks (BlokowanieRekordów). Ponadto niektóre właściwości powiązane z danymi mogą zostać zastąpione, na przykład właściwości Filter, FilterOn, OrderBy oraz OrderByOn.

Wywołanie metody Requery zestawu rekordów formularza (na przykład Forms(0).Recordset.Requery) może spowodować, że formularz stanie się niepowiązany. Aby odświeżyć dane w formularzu powiązanym z zestawem rekordów, ustaw właściwość RecordSource (ŹródłoDnoterów ) formularza na siebie (Forms(0).RecordSource = Forms(0).RecordSource).

Jeśli formularz jest powiązany z zestawem rekordów, w przypadku korzystania z właściwości Filter za pomocą polecenia Formularz wystąpi błąd.

Przykład

W poniższym przykładzie użyto właściwości Recordset (Zestaw rekordów) w celu utworzenia nowej kopii obiektu Recordset (Zestaw rekordów) z bieżącego formularza, a następnie wydrukowano nazwy pól w oknie Debugowanie.

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

W kolejnym przykładzie użyto właściwości Recordset (Zestaw rekordów) i obiektu Recordset (Zestaw rekordów) w celu zsynchronizowania zestawu rekordów z bieżącym rekordem formularza. Po zaznaczeniu nazwy firmy z pola kombi wykorzystuje się metodę FindFirst w celu zlokalizowania rekordu dla tej firmy, co powoduje, że formularz wyświetla znaleziony rekord.

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

Poniższy kod pomaga określić, jaki typ zestawu rekordów jest zwracany przez właściwość Recordset (Zestaw rekordów) w różnych warunkach.

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