Partager via


Recordset2.Move, méthode (DAO)

S’applique à : Access 2013, Office 2013

Déplace l’enregistrement actif d’un objet Recordset.

Syntaxe

expression . Move(Rows, StartBookmark)

Expression Variable qui représente un objet Recordset2 .

Paramètres

Nom

Obligatoire/facultatif

Type de données

Description

Rows

Obligatoire

Entier long

Nombre de lignes en fonction duquel l'enregistrement est déplacé. Si l'argument rows a une valeur supérieure à 0, l'enregistrement avance (vers la fin du fichier). Si l'argument rows a une valeur inférieure à 0, l'enregistrement recule (vers le début du fichier).

StartBookmark

Facultatif

Variante

Valeur identifiant un signet. Si vous spécifiez l'argument startbookmark, le déplacement s'opère par rapport à ce signet. Sinon, l’opération Move part de l’enregistrement actif.

Remarques

Si vous utilisez Move pour positionner le pointeur d'enregistrement actif avant le premier enregistrement, le pointeur d'enregistrement actif se déplace au début du fichier. Si l'objet Recordset ne contient pas d'enregistrements et que sa propriété BOF a la valeur True, le recours à cette méthode pour faire reculer un enregistrement entraîne une erreur.

Si vous utilisez Move pour positionner le pointeur d'enregistrement actif après le dernier enregistrement, le pointeur d'enregistrement actif se déplace à la fin du fichier. Si l'objet Recordset ne contient pas d'enregistrements et que sa propriété EOF a la valeur True, le recours à cette méthode pour faire avancer un enregistrement entraîne une erreur.

Si la propriété BOF ou EOF a la valeur True et que vous tentez d’utiliser la méthode Move sans un signet valide, une erreur d’exécution se produit.

Remarque

  • Lorsque vous appliquez la méthode Move à un objet Recordset de type avant uniquement, la valeur de l'argument « rows » doit être un entier positif et les signets ne sont pas autorisés. Cela signifie que vous pouvez uniquement faire avancer un enregistrement.
  • Pour faire de l’ enregistrement actif le premier enregistrement, le dernier, le suivant ou le précédent dans un objet Recordset, utilisez la méthode MoveFirst, MoveLast, MoveNext ou MovePrevious.
  • Le fait d'utiliser la méthode Move en attribuant la valeur 0 à l'argument « rows » permet d'extraire facilement les données sous-jacentes de l'enregistrement actif. Cela peut vous être utile si vous souhaitez vous assurer que l'enregistrement actif comporte les données les plus récentes des tables de base. Cela permet également d'annuler les appels Edit ou AddNew en cours.

Exemple

Cet exemple de code montre comment utiliser la méthode Move pour positionner le pointeur d’enregistrement en fonction de l’entrée de l’utilisateur.

    Sub MoveX() 
     
       Dim dbsNorthwind As Database 
       Dim rstSuppliers As Recordset2 
       Dim varBookmark As Variant 
       Dim strCommand As String 
       Dim lngMove As Long 
     
       Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
       Set rstSuppliers = _ 
          dbsNorthwind.OpenRecordset("SELECT CompanyName, " & _ 
          "City, Country FROM Suppliers ORDER BY CompanyName", _ 
          dbOpenDynaset) 
     
       With rstSuppliers 
          ' Populate recordset. 
          .MoveLast 
          .MoveFirst 
     
          Do While True 
             ' Display information about current record and ask  
             ' how many records to move. 
             strCommand = InputBox( _ 
                "Record " & (.AbsolutePosition + 1) & " of " & _ 
                .RecordCount & vbCr & "Company: " & _ 
                !CompanyName & vbCr & "Location: " & !City & _ 
                ", " & !Country & vbCr & vbCr & _ 
                "Enter number of records to Move " & _ 
                "(positive or negative).") 
     
             If strCommand = "" Then Exit Do 
     
             ' Store bookmark in case the Move doesn't work. 
             varBookmark = .Bookmark 
     
             ' Move method requires parameter of data type Long. 
             lngMove = CLng(strCommand) 
             .Move lngMove 
     
             ' Trap for BOF or EOF. 
             If .BOF Then 
                MsgBox "Too far backward! " & _ 
                   "Returning to current record." 
                .Bookmark = varBookmark 
             End If 
             If .EOF Then 
                MsgBox "Too far forward! " & _ 
                   "Returning to current record." 
                .Bookmark = varBookmark 
             End If 
          Loop 
          .Close 
       End With 
     
       dbsNorthwind.Close 
     
    End Sub