Freigeben über


Recordset.Clone-Methode (DAO)

Gilt für: Access 2013, Office 2013

Erstellt ein dupliziertes Recordset-Objekt, das auf das ursprüngliche Recordset-Objekt verweist.

Syntax

Ausdruck .Clone

Ausdruck Eine Variable, die ein Recordset-Objekt darstellt.

Rückgabewert

Recordset

Hinweise

Verwenden Sie die Clone-Methode, um mehrere duplizierte Recordset-Objekte zu erstellen. Jedes Recordset kann einen eigenen aktuellen Datensatz haben. Wenn Sie Clone alleine verwenden, werden die Daten in den Objekten oder in den zugrunde liegenden Strukturen nicht geändert. Bei Verwendung der Clone -Methode können Sie Lesezeichen zwischen zwei oder mehr Recordset -Objekten freigeben, da ihre Lesezeichen austauschbar sind.

Sie können die Clone -Methode verwenden, wenn Sie einen Vorgang für ein Recordset ausführen möchten, für den mehrere aktuelle Datensätze erforderlich ist. Dies ist schneller und effizienter, als ein zweites Recordset zu öffnen. Ein mit der Clone -Methode erstelltes Recordset hat zunächst keinen aktuellen Datensatz. Um einen Datensatz aktuell zu machen, bevor Sie das Recordset klonen, müssen Sie die Bookmark -Eigenschaft festlegen oder eine der Move -Methoden, eine der Find -Methoden oder die Seek -Methode verwenden.

Das Anwenden der Close -Methode auf das ursprüngliche oder das duplizierte Objekt wirkt sich nicht auf das jeweils andere Objekt aus. Wenn Sie z. B. Close für das ursprüngliche Recordset ausführen, wird der Klon nicht geschlossen.

Hinweis

  • Wird ein Klonrecordset in einer ausstehenden Transaktion geschlossen, führt dies zu einem impliziten Rollback-Vorgang.
  • When you clone a table-type Recordset object in a Microsoft Access workspace, the Index property setting is not cloned on the new copy of the recordset. Sie müssen die Index-Eigenschafteneinstellung manuell kopieren.

Beispiel

In diesem Beispiel werden mit der Clone-Methode Kopien eines Recordset erstellt. Anschließend kann der Benutzer den Datensatzzeiger jeder Kopie unabhängig positionieren.

    Sub CloneX() 
     
       Dim dbsNorthwind As Database 
       Dim arstProducts(1 To 3) As Recordset 
       Dim intLoop As Integer 
       Dim strMessage As String 
       Dim strFind As String 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     
       ' If the following SQL statement will be used often, 
       ' creating a permanent QueryDef will result in better 
       ' performance. 
       Set arstProducts(1) = dbsNorthwind.OpenRecordset( _ 
          "SELECT ProductName FROM Products " & _ 
          "ORDER BY ProductName", dbOpenSnapshot) 
     
       ' Create two clones of the original Recordset. 
       Set arstProducts(2) = arstProducts(1).Clone 
       Set arstProducts(3) = arstProducts(1).Clone 
     
       Do While True 
     
          ' Loop through the array so that on each pass, the  
          ' user is searching a different copy of the same  
          ' Recordset. 
          For intLoop = 1 To 3 
     
             ' Ask for search string while showing where the 
             ' current record pointer is for each Recordset. 
             strMessage = _ 
                "Recordsets from Products table:" & vbCr & _ 
                "  1 - Original - Record pointer at " & _ 
                arstProducts(1)!ProductName & vbCr & _ 
                "  2 - Clone - Record pointer at " & _ 
                arstProducts(2)!ProductName & vbCr & _ 
                "  3 - Clone - Record pointer at " & _ 
                arstProducts(3)!ProductName & vbCr & _ 
                "Enter search string for #" & intLoop & ":" 
             strFind = Trim(InputBox(strMessage)) 
             If strFind = "" Then Exit Do 
     
             ' Find the search string; if there's no match, jump 
             ' to the last record. 
             With arstProducts(intLoop) 
                .FindFirst "ProductName >= '" & strFind & "'" 
                If .NoMatch Then .MoveLast 
             End With 
     
          Next intLoop 
     
       Loop 
     
       arstProducts(1).Close 
       arstProducts(2).Close 
       arstProducts(3).Close 
       dbsNorthwind.Close 
     
    End Sub