Svojstvo „Recordset“

Primenjuje se na
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Odnosi se na

Objekat „ComboBox“
Objekat obrasca
Objekat „ListBox“
Objekat izveštaja

Vraća ili postavlja ADO Recordset ili DAO Recordset objekat koji predstavlja izvor zapisa za navedeni obrazac, izveštaj, kontrolu okvira sa listom ili kontrolu kombinovanog okvira. Čitanje/pisanje.

izraz.Recordset

Izraz Potrebne. Izraz koji daje jedan od objekata sa liste „Odnosi se na“.

Primedbe

Svojstvo Recordset daje objekat skupa zapisa koji pruža podatke koji se pregledaju u obrascu, izveštaju, okviru sa listom opcija ili kontroli kombinovanog okvira. Na primer, ako je obrazac zasnovan na upitu, upućivanje na svojstvo Recordset ekvivalentno je kloniranju objekta Recordset pomoću istog upita. Međutim, za razliku od korišćenja svojstva RecordsetClone, promena toga koji je zapis trenutni u skupu zapisa koji daje svojstvo Recordset obrasca postavlja i trenutni zapis obrasca.

Ovo svojstvo je dostupno samo kada koristite Visual Basic for Applications (VBA) kôd.

Ponašanje čitanja/pisanja svojstva Recordset određuju tip skupa zapisa (ADO ili DAO) i tip podataka (Access ili SQL) koji se nalaze u skupu zapisa koji identifikuje svojstvo.

Tip skupa zapisa Na osnovu SQL podataka Na osnovu Access podataka
ADO Čitanje/pisanje Čitanje/pisanje
DAO Nije primenljivo Čitanje/pisanje

Sledeći primer otvara obrazac, otvara skup zapisa, a zatim povezuje obrazac sa skupom zapisa tako što postavlja svojstvo Recordset obrasca na novi napravljeni objekat 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

Koristite svojstvo Recordset:

  • Da biste povezali više obrazaca u zajednički skup podataka. To omogućava sinhronizaciju više obrazaca. Na primer,
    Set Me.Recordset = Forms!Form1.Recordset
  • Da biste koristili metode koji nisu direktno podržani u obrascima uz objekat Recordset. Na primer, svojstvo Recordset možete da koristite uz metode ADO Pronalaženje ili DAO Pronalaženje u prilagođenom dijalogu za pronalaženje zapisa.
  • Da biste završili transakciju (koja može da se vrati) nad skupom uređivanja koja utiču na više obrazaca.

Promena svojstva Recordset obrasca može da promeni i svojstva RecordSource, RecordsetType i RecordLocks. Neka svojstva povezana sa podacima takođe mogu da se zamene, na primer svojstva Filter, FilterOn, OrderBy i OrderByOn.

Pozivanje metoda Requery skupa zapisa obrasca (na primer, Forms(0).Recordset.Requery) može dovesti do nepovezanog obrasca. Da biste osvežili podatke u obrascu povezanom sa skupom zapisa, postavite svojstvo RecordSource obrasca na samog sebe (Forms(0).RecordSource = Forms(0).RecordSource).

Kada se obrazac poveže sa skupom zapisa, dolazi do greške ako koristite komandu „Filtriraj po obrascu“.

Primer

Sledeći primer koristi svojstvo Recordset za pravljenje nove kopije objekta Recordset od trenutnog obrasca, a zatim štampa imena polja u prozoru „Otklanjanje grešaka“.

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

Sledeći primer koristi svojstvo Recordset i objekat Recordset za sinhronizovanje skupa zapisa sa trenutnim zapisom obrasca. Kada se iz kombinovanog okvira izabere ime preduzeća, koristi se metod FindFirst za pronalaženje zapisa za to preduzeće, usled čega obrazac prikazuje pronađeni zapis.

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

Sledeći kôd doprinosi određivanju toga koji tip skupa zapisa daje svojstvo Recordset u različitim uslovima.

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