Primjenjuje se na
Objekt ComboBox |
Objekt Form |
Objekt ListBox |
Objekt Report |
Vraća ili postavlja objekt ADO Recordset ili DAO Recordset koji predstavlja izvor zapisa za navedeni obrazac, izvješće, kontrolu okvira s popisom ili kontrolu kombiniranog okvira. Čitanje/pisanje.
izraz.Recordset
expression Obavezno. Izraz koji vraća jedan od objekata na popisu Primjenjuje se na.
Napomene
Svojstvo Recordset vraća objekt skupa zapisa koji daje podatke koji se pregledavaju u obrascu, izvješću, kontroli okvira s popisom ili kontroli kombiniranog okvira. Ako se, primjerice, obrazac temelji na upitu, pozivanje na svojstvo Recordset istovjetno je kloniranju objekta Recordset pomoću istog upita. No za razliku od upotrebe svojstva RecordsetClone, promjena zapisa koji je aktualan u skupu zapisa koji se vraća svojstvom Recordset obrasca također postavlja aktualni zapis za obrazac.
Svojstvo je dostupno isključivo putem koda programa Visual Basic for Applications (VBA).
Ponašanje čitanja/pisanja za svojstvo Recordset određeno je vrstom skupa zapisa (ADO ili DAO) i vrstom podataka (Access ili SQL) koje sadrži skup zapisa definiran svojstvom.
Vrsta skupa podataka |
Na temelju SQL podataka |
Na temelju podataka iz programa Access |
ADO |
Čitanje/pisanje |
Čitanje/pisanje |
DAO |
Nije dostupno |
Čitanje/pisanje |
U sljedećem se primjeru otvara obrazac, otvara se skup zapisa i zatim se obrazac veže uz skup podataka postavljanjem svojstva Recordset obrasca na novo stvoreni 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
Korištenje svojstva Recordset:
-
za vezanje većeg broja obrazaca za zajednički skup podataka. Time se omogućuje sinkronizacija većeg broja obrazaca. Na primjer:
Set Me.Recordset = Forms!Form1.Recordset
-
za korištenje metoda s objektom Recordset koje nisu izravno podržane na obrascima. Možete, primjerice, koristiti svojstvo Recordset metodama ADO Find i DAO Find u prilagođenom dijaloškom okviru za pronalaženje zapisa.
-
za prelamanje transakcija (koje se mogu povući) oko skupa uređivanja koje utječu na veći broj obrazaca.
Promjenom svojstva Recordset obrasca mogla bi se promijeniti i svojstva RecordSource, RecordsetType i RecordLocks. Ujedno bi se mogla nadjačati i neka svojstva povezana s podacima, primjerice, Filter, FilterOn, OrderBy i OrderByOn.
Pozivanje metode Requery skupa zapisa obrasca (primjerice, Forms(0).Recordset.Requery) može uzrokovati prekidanje povezivanja obrasca. Za osvježavanje podataka u obrascu koji je povezan sa skupom zapisa, postavite svojstvo RecordSource obrasca na samo sebe (Forms(0).RecordSource = Forms(0).RecordSource).
Kada je obrazac povezan sa skupom zapisa, pri korištenju naredbe Filter by Form pojavit će se pogreška.
Primjer
U sljedećem se primjeru svojstvo Recordset koristi za stvaranje nove kopije objekta Recordset iz aktualnog obrasca i zatim se ispisuju nazivi polja u prozoru za ispravljanje pogreš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
U sljedećem se primjer svojstvo Recordset i objekt Recordset koriste za sinkronizaciju skupa zapisa s aktualnim zapisom obrasca. Kada se u kombiniranom okviru odabere naziv tvrtke, za pronalaženje zapisa te tvrtke koristi se metoda FindFirst, pa se u obrascu 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
Uz sljedeći se kod utvrđuje koja se vrsta skupa zapisa vraća pomoću svojstva Recordset u različitim uvjetima.
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