Form.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

expression Eine Variable, die ein Form-Objekt darstellt.

HinwBemerkungeneise

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.

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.Requerydass 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.