Report.Recordset-Eigenschaft (Access)
Gibt das ADO-Recordset- oder DAO-Recordset-Objekt zurück, das die Datensatzquelle für das angegebene Objekt darstellt, oder legt es fest. Object-Wert mit Lese-/Schreibzugriff.
Syntax
Ausdruck. Recordset
Ausdruck Eine Variable, die ein Report-Objekt darstellt.
Hinweise
Die Recordset-Eigenschaft gibt das Recordset-Objekt zurück, das die daten bereitstellt, die in einem Formular, Bericht, Listenfeld-Steuerelement oder Kombinationsfeld-Steuerelement durchsucht werden. Basiert ein Formular z. B. auf einer Abfrage, so entspricht ein Verweis auf die Recordset-Eigenschaft dem Kopieren eines Recordset-Objekts unter Verwendung derselben Abfrage. Anders als bei der Verwendung der RecordsetClone-Eigenschaft legt das Ändern des aktuellen Datensatzes im Recordset-Objekt, das von der Recordset-Eigenschaft des Formulars zurückgegeben wird, auch den aktuellen Datensatz des Formulars fest.
Hinweis
Berichte können nicht an ADO-Recordsets gebunden werden. Sie müssen entweder DAO verwenden oder den ADO-Recordsets in einer temporären Tabelle sichern und dann den Bericht an die diese temporäre Tabelle binden.
Das Lese-/Schreibverhalten der Recordset-Eigenschaft wird durch den Typ des Recordsets (ADO oder DAO) und den Typ der Daten (Access oder SQL) bestimmt, die in dem durch die Eigenschaft identifizierten Recordset enthalten sind.
Recordsettyp | Basierend auf SQL-Daten | Basierend auf Daten im Access-Datenbankmodul |
---|---|---|
ADO | Lesen/Schreiben | Lesen/Schreiben |
DAO | Nicht zutreffend | Lesen/Schreiben |
Das folgende Beispiel öffnet ein Formular, öffnet ein Recordset und bindet dann das Formular an das Recordset, indem die RecordsetRecordset-Eigenschaft des Formulars auf das neu erstellte Recordset-Objekt festgelegt wird.
Global rstSuppliers As ADODB.Recordset
Sub MakeRW()
DoCmd.OpenForm "Suppliers"
Set rstSuppliers = New ADODB.Recordset
rstSuppliers.CursorLocation = adUseClient
rstSuppliers.Open "Select * From Suppliers", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set Forms("Suppliers").Recordset = rstSuppliers
End Sub
Verwenden Sie die Recordset-Eigenschaft für Folgendes:
Verwenden Sie Methoden mit dem Recordset-Objekt , die in Formularen nicht direkt unterstützt werden. Zum Beispiel können Sie die Recordset -Eigenschaft verwenden, wenn Sie mit der ADO-Methode Find oder der DAO-Methode Find einen Datensatz in einem benutzerdefinierten Dialogfeld suchen.
Umschließen Sie eine Transaktion (für die ein Rollback ausgeführt werden kann) um eine Reihe von Bearbeitungen, die sich auf mehrere Formulare auswirken.
Änderungen an der RecordsetRecordset-Eigenschaft eines Formulars wirken sich auch auf die Eigenschaften RecordSourceRecordSource, RecordsetTypeRecordsetType und RecordLocksRecordLocks aus. Außerdem werden eventuell einige datenbezogene Eigenschaften außer Kraft gesetzt; so z. B. die Eigenschaften FilterFilter, FilterOnFilterOn, OrderByOrderBy und OrderByOnOrderByOn.
Das Aufrufen der Requery-Methode des Recordsets eines Formulars (z. B. ) kann dazu führen,
Forms(0).Recordset.Requery
dass das Formular ungebunden wird. Um die Daten in einem Formular zu aktualisieren, das an ein Recordset gebunden ist, legen Sie die RecordSource-Eigenschaft des Formulars auf sich selbst fest:Forms(0).RecordSource = Forms(0).RecordSource
.Binden mehrerer Formulare an ein gemeinsames Dataset. Dadurch können mehrere Formulare synchronisiert werden. Beispiel:
Set Me.Recordset = Forms!Form1.Recordset
Hinweis
Wenn ein Formular an ein Recordset gebunden ist, tritt ein Fehler auf, wenn Sie den Befehl Nach Formular filtern verwenden.
Beispiel
Im folgenden Beispiel wird die RecordsetRecordset-Eigenschaft verwendet, um eine Kopie des Recordset-Objekts aus dem aktuellen Formular zu erzeugen und dann die Feldnamen im Testfenster auszugeben.
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
Im folgenden Beispiel werden die Recordset-Eigenschaft und das Recordset-Objekt verwendet, um ein Recordset mit dem aktuellen Datensatz des Formulars zu synchronisieren. Wenn ein Firmenname aus einem Kombinationsfeld ausgewählt wird, wird die FindFirst-Methode verwendet, um den Datensatz für diese Firma zu suchen und das Formular den gefundenen Datensatz anzeigen zu lassen.
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
Der folgende Code hilft bei der Bestimmung, welcher Recordsettyp bei unterschiedlichen Bedingungen von der Recordset-Eigenschaft zurückgegeben wird.
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
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.