Utilisation de signets
Il est souvent utile de revenir directement à un enregistrement spécifique après avoir été déplacé dans le Recordset sans avoir à faire défiler chaque enregistrement et comparer les valeurs. Par exemple, si vous tentez de rechercher un enregistrement à l’aide de la méthode Find, mais que la recherche ne renvoie aucun enregistrement, vous êtes automatiquement placé à l’une ou l’autre extrémité du Recordset. Si votre fournisseur les prend en charge, les signets peuvent être utilisés pour marquer votre lieu avant d’utiliser la méthode Find afin de pouvoir revenir à votre emplacement. Un signet est une valeur de type Variant qui identifie de façon unique un enregistrement dans un objet Recordset.
Vous pouvez également utiliser un tableau de variantes de signets avec la méthode Recordset Filter pour filtrer sur un ensemble d’enregistrements sélectionné. Pour plus d’informations sur cette technique, consultez Filtrage des résultats dans la rubrique, Utilisation des Recordsets, plus loin dans cette section.
Vous pouvez utiliser la propriété Bookmark pour obtenir un signet pour un enregistrement ou définir l’enregistrement actif dans un objet Recordset sur l’enregistrement identifié par un signet valide. Le code suivant utilise la propriété Bookmark pour définir un signet, puis revenir à l’enregistrement avec signet après le passage à d’autres enregistrements. Pour déterminer si votre Recordset prend en charge les signets, utilisez la méthode Supports.
'BeginBookmarkEg
Dim varBookmark As Variant
Dim blnCanBkmrk As Boolean
objRs.Open strSQL, strConnStr, adOpenStatic, adLockOptimistic, adCmdText
If objRs.RecordCount > 4 Then
objRs.Move 4 ' move to the fifth record
blnCanBkmrk = objRs.Supports(adBookmark)
If blnCanBkmrk = True Then
varBookmark = objRs.Bookmark ' record the bookmark
objRs.MoveLast ' move to a different record
objRs.Bookmark = varBookmark ' return to the bookmarked (sixth) record
End If
End If
'EndBookmarkEg
La méthode Supports est abordée plus en détail plus loin.
À l’exception du cas des Recordsets clonés, les signets sont propres au Recordset dans lequel ils ont été créés, même si la même commande est utilisée. Cela signifie que vous ne pouvez pas utiliser un signet obtenu à partir d’un Recordset pour accéder au même enregistrement dans un second Recordset ouvert avec la même commande.