Saturday, October 29, 2022

Recordset-Eigenschaft

Gilt für

ComboBox-Objekt

Formularobjekt

ListBox-Objekt

Berichtsobjekt

Gibt das ADO- Recordset- oder DAO- Recordset -Objekt zurück oder legt es fest, das die Datensatzquelle für das angegebene Formular, den Bericht, das Listenfeld-Steuerelement oder das Kombinationsfeld-Steuerelement darstellt. Lesen Schreiben.

Ausdruck . Datensatz

Ausdruck Erforderlich. Ein Ausdruck, der eines der Objekte in der Liste Gilt für zurückgibt.

Bemerkungen

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. Wenn ein Formular beispielsweise auf einer Abfrage basiert, entspricht der Verweis auf die Recordset- Eigenschaft dem Klonen eines Recordset- Objekts mithilfe derselben Abfrage. Im Gegensatz zur Verwendung der RecordsetClone -Eigenschaft wird jedoch beim Ändern des aktuellen Datensatzes in dem von der Recordset -Eigenschaft des Formulars zurückgegebenen Datensatz auch der aktuelle Datensatz des Formulars festgelegt.

Diese Eigenschaft ist nur mit VBA-Code (Visual Basic for Applications) verfügbar.

Das Lese-/Schreibverhalten der Recordset -Eigenschaft wird durch den Datensatztyp (ADO oder DAO) und den Datentyp (Access oder SQL) bestimmt, der in dem durch die Eigenschaft identifizierten Datensatz enthalten ist.

Recordset -Typ

Basierend auf SQL-Daten

Basierend auf Zugangsdaten

ADO

Lesen Schreiben

Lesen Schreiben

DAO

N / A

Lesen Schreiben

Im folgenden Beispiel wird ein Formular geöffnet, ein Recordset geöffnet und das Formular dann an das Recordset gebunden, indem die Recordset -Eigenschaft des Formulars auf das neu erstellte Recordset -Objekt festgelegt wird.

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

Verwenden Sie die Recordset- Eigenschaft:

  • Um mehrere Formulare an einen gemeinsamen Datensatz zu binden. Dies ermöglicht die Synchronisierung mehrerer Formulare. Zum Beispiel,

    Set Me.Recordset = Forms!Form1.Recordset

  • Um Methoden mit dem Recordset- Objekt zu verwenden, die nicht direkt auf Formularen unterstützt werden. Beispielsweise können Sie die Recordset- Eigenschaft mit den Methoden ADO Find oder DAO Find in einem benutzerdefinierten Dialogfeld zum Suchen eines Datensatzes verwenden.

  • Um eine Transaktion (die rückgängig gemacht werden kann) um eine Reihe von Änderungen zu wickeln, die sich auf mehrere Formulare auswirken.

Das Ändern der Eigenschaft Recordset eines Formulars kann auch die Eigenschaften RecordSource , RecordsetType und RecordLocks ändern. Außerdem können einige datenbezogene Eigenschaften überschrieben werden, beispielsweise die Eigenschaften Filter , FilterOn , OrderBy und OrderByOn .

Das Aufrufen der Requery- Methode des Recordsets eines Formulars (z. B. Forms(0).Recordset.Requery ) kann dazu führen, dass das Formular ungebunden wird. Um die Daten in einem an ein Recordset gebundenen Formular zu aktualisieren, legen Sie die RecordSource- Eigenschaft des Formulars auf sich selbst fest ( Forms(0).RecordSource = Forms(0).RecordSource ).

Wenn ein Formular an ein Recordset gebunden ist, tritt ein Fehler auf, wenn Sie den Befehl Formularbasierter Filter verwenden.

Beispiel

Das folgende Beispiel verwendet die Recordset- Eigenschaft, um eine neue Kopie des Recordset -Objekts aus dem aktuellen Formular zu erstellen, und gibt dann die Namen der Felder im Debug-Fenster aus.

 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

Das nächste Beispiel verwendet die Recordset -Eigenschaft und das Recordset -Objekt, 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 dieses Unternehmen zu finden, wodurch das Formular den gefundenen Datensatz anzeigt.

 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 Datensatztyp von der Recordset -Eigenschaft unter verschiedenen Bedingungen 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

No comments:

Post a Comment