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
Next
End 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.Close
End 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 If
End Sub