Gjelder for
ComboBox-objektet |
Form-objektet |
ListBox-objektet |
Report-objektet |
Returnerer eller angir objektet ADO Recordset eller DAO Recordset som representerer postkilde for angitt skjema, rapport, liste eller kombinasjonsboks. Lese/skrive.
uttrykk.Recordset
uttrykk Påkrevd. Et uttrykk som returnerer ett av objektene i Gjelder for-listen.
Kommentarer
Egenskapen Recordset returnerer postsettobjektet som inneholder dataene som leses i et skjema, en rapport, liste eller kombinasjonsboks. Hvis et skjema for eksempel er basert på en spørring, vil det å referere til egenskapen Recordset tilsvare kloning av et Recordset-objekt ved bruk av samme spørring. I motsetning til bruk av egenskapen RecordsetClone, vil det å endre hvilken post som er gjeldende i postsettet som returneres av skjemaets egenskap Recordset, også angi den gjeldende posten i skjemaet.
Egenskapen er bare tilgjengelig ved å bruke Visual Basic for Applications (VBA)-koden.
Virkemåten til lese-/skrivetilgang for egenskapen Recordset bestemmes av typen postsett (ADO eller DAO) og hvilken datatype (Access eller SQL) som finnes i postsettet som identifiseres av egenskapen.
Postsett -type |
Basert på SQL-data |
Basert på Access-data |
ADO |
Lese/skrive |
Lese/skrive |
DAO |
I/T |
Lese/skrive |
Følgende eksempel åpner et skjema, åpner et postsett og binder deretter skjemaet til postsettet ved å angi skjemaets Recordset-egenskap til det nylig opprettede objektet 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
Bruk egenskapen Recordset til følgende:
-
Binde flere skjemaer til et felles datasett. Dette lar deg synkronisere flere skjemaer. Eksempler:
Set Me.Recordset = Forms!Form1.Recordset
-
Bruke metoder med objektet Recordset som ikke støttes direkte i skjemaer. Du kan for eksempel bruke egenskapen Recordset med metodene ADO Find eller DAO Find i en egendefinert dialogboks for å finne en post.
-
Bryte en transaksjon (som kan tilbakestilles) rundt et sett med redigeringer som kan påvirke flere skjemaer.
Når egenskapen Recordset endres i et skjema, kan dette også endre egenskapene RecordSource, RecordsetType og RecordLocks. Enkelte datarelaterte egenskaper kan også overstyres, for eksempel egenskapene Filter, FilterOn, OrderBy og OrderByOn
Anrop på metode Requery for postsettet i et skjema (for eksempel Forms(0).Recordset.Requery) kan føre til at skjemaet blir ubundet. Hvis du vil oppdatere dataene i et skjema som er bundet til et postsett, kan du angi egenskapen RecordSource til seg selv (Forms(0).RecordSource = Forms(0).RecordSource).
Når et skjema er bundet til et postsett, oppstår det en feil hvis du bruker kommandoen for å filtrere etter skjema.
Eksempel
Følgende eksempel bruker egenskapen Recordset til å opprette en ny kopi av objektet Recordset fra det gjeldende skjemaet, og skriver deretter navnene på feltene i vinduet Feilsøking.
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
Det neste eksemplet bruker egenskapen Recordset og objektet Recordset for å synkronisere et postsett med den gjeldende posten for skjemaet. Når et firmanavn velges fra en kombinasjonsboks, kan metoden FindFirst brukes til å finne posten for dette firmaet, slik at skjemaet viser posten som blir funnet.
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
Følgende kode bidrar til å bestemme hvilken type postsett som returneres av egenskapen Recordset i ulike situasjoner.
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