Gælder for
|
ComboBox-objekt |
|
Formularobjekt |
|
ListBox-objekt |
|
Rapportobjekt |
Returnerer eller angiver objekterne ADO Postsæt eller DAO Postsæt, der repræsenterer postkilde for den angivne formular, rapport, listefeltelement eller kombinationsfeltelement. Læs/skriv.
udtryk.Postsæt
udtryk Påkrævet. Et udtryk, der returnerer et af objekterne på listen Gælder for.
Bemærkninger
Egenskaben Postsæt returnerer postsætobjektet, der indeholder de data, der skal gennemses i en formular, rapport, listefeltelement eller kombinationsfeltelement. Hvis en formular er baseret på en forespørgsel, svarer det at referere til egenskaben Postsæt til at klone et Postsæt-objekt ved hjælp af den samme forespørgsel. Men i modsætning til at bruge egenskaben RecordsetClone så indstilles formularens aktuelle post også, når man ændrer, hvilken post der er aktuel i postsættet ved hjælp af formularens Postsæt-egenskab.
Denne egenskab er kun tilgængelig ved hjælp af VBA-kode (Visual Basic for Applications).
Læs/skriv-funktionaliteten for egenskaben Postsæt bestemmes af typen af postsæt (ADO eller DAO) og typen af data (Access eller SQL), der er indeholdt i postsættet, der er identificeret for egenskaben.
|
Postsæt -type |
Baseret på SQL-data |
Baseret på Access-data |
|
ADO |
Læs/skriv |
Læs/skriv |
|
DAO |
I/T |
Læs/skriv |
I nedenstående eksempel åbnes en formular, åbnes et postsæt og derefter bindes formularen til postsættet ved at indstille formularens Postsæt-egenskab til det nyoprettede Postsæt-objekt.
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
Brug af Postsæt-egenskaben:
-
Til at binde flere formularer til et fælles datasæt. Dette giver mulighed for synkronisering af flere formularer. For eksempel:
Set Me.Recordset = Forms!Form1.Recordset
-
Til at bruge metoder med Postsæt-objektet, der ikke understøttes direkte i formularer. Eksempelvis kan du bruge Postsæt-egenskaben med metoderne ADO Søg eller DAO Søg i en brugerdefineret dialogboks til at finde en post.
-
Til at ombryde en transaktion (som kan annulleres) omkring et sæt ændringer, der påvirker flere formularer.
Ændring af en formulars Postsæt-egenskab kan også ændre egenskaberne Postkilde, Postsættype og Postlåse . Nogle datarelaterede egenskaber kan også tilsidesættes, f.eks. egenskaberne Filter, FilterTil, SorterEfter og SorterEfterTil .
Kald af metoden Genforespørgsel i en formulars postsæt (f.eks. Forms(0).Recordset.Requery) kan medføre, at formularen bliver ubundet. Hvis du vil opdatere dataene i en formular, der er bundet til et postsæt, skal du angive egenskaben Postkilde for formularen til sig selv (Forms(0).RecordSource = Forms(0).RecordSource).
Når en formular er bundet til et postsæt, opstår der en fejl, hvis du bruger kommandoen Filtrer efter formular.
Eksempel
I følgende eksempel bruges egenskaben Postsæt til at oprette en ny kopi af objektet Postsæt fra den aktuelle formular, og derefter udskrives navnene på felterne i vinduet Fejlfinding.
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
I næste eksempel bruges Postsæt-egenskaben og Postsæt-objektet til at synkronisere et postsæt med formularens aktuelle post. Når et firmanavn vælges i et kombinationsfelt, så benyttes FindFørst-metoden til at finde posten for det pågældende firma, der medfører, at formularen viser den fundne post.
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
Den følgende kode hjælper med til at bestemme, hvilken type postsæt der returneres af Recordset-egenskaben under forskellige betingelser.
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