Partager via


Jeu d'enregistrements : signets et positions absolues (ODBC)

Mise à jour : novembre 2007

Cette rubrique s'applique aux classes ODBC MFC.

Lorsque vous naviguez au sein d'un jeu d'enregistrements, il arrive fréquemment que vous ayez besoin de revenir sur un enregistrement donné. Deux méthodes, le signet et la position absolue, permettent de répondre à ce besoin.

Cette rubrique explique :

  • comment utiliser les signets ;

  • comment attribuer une position absolue à l'enregistrement courant.

Signets dans ODBC MFC

Un signet identifie un enregistrement de façon unique. Lorsque vous naviguez au sein d'un jeu d'enregistrements, vous ne pouvez pas toujours vous fier à la position absolue d'un enregistrement dans la mesure où les enregistrements peuvent être supprimés du jeu d'enregistrements. La solution la plus fiable pour conserver la trace de la position d'un enregistrement consiste à utiliser un signet. La classe CRecordset propose des fonctions membres pour :

  • obtenir le signet de l'enregistrement courant, de telle sorte que vous puissiez le sauvegarder dans une variable (GetBookmark) ;

  • atteindre rapidement un enregistrement donné en indiquant son signet, préalablement sauvegardé dans une variable (SetBookmark).

L'exemple ci-après illustre comment utiliser les fonctions membres pour marquer l'enregistrement courant et y revenir par la suite.

// rs is a CRecordset or
// CRecordset-derived object

CDBVariant varRecordToReturnTo;
rs.GetBookmark( varRecordToReturnTo );

// More code in which you
// move to other records

rs.SetBookmark( varRecordToReturnTo );

Il n'est pas nécessaire d'extraire le type de données sous-jacent de l'objet CDBVariant Class. Assignez la valeur à l'aide de GetBookmark et accédez au signet avec SetBookmark.

Remarque :

Remarque   Il se peut, en fonction du pilote ODBC et du type du jeu d'enregistrements, que les signets ne soient pas pris en charge. Vous pouvez facilement savoir si les signets sont pris en charge en appelant CRecordset::CanBookmark. Par ailleurs, si les signets sont pris en charge, vous devez choisir explicitement de les implémenter en précisant l'option CRecordset::useBookmarks dans la fonction membre CRecordset::Open. Vous devez également vérifier que les signets persistent après certaines opérations sur les jeux d'enregistrements. Par exemple, si vous effectuez une opération Requery (lancement d'une nouvelle requête) sur un jeu d'enregistrements, il se peut que les signets ne soient plus valides. Appelez CDatabase::GetBookmarkPersistence pour vérifier si vous pouvez appeler SetBookmarksans risque.

Positions absolues dans ODBC MFC

Outre les signets, la classe CRecordset permet de définir l'enregistrement courant en indiquant sa position ordinale. Cette méthode est appelée positionnement absolu.

Remarque :

Le positionnement absolu n'est pas disponible pour les jeux d'enregistrements en avant seulement. Pour plus d'informations sur les jeux d'enregistrements en avant seulement, consultez Jeu d'enregistrements (ODBC).

Pour déplacer le pointeur d'enregistrement actif qui utilise la position absolue, appelez CRecordset::SetAbsolutePosition. Lorsque vous passez une valeur à SetAbsolutePosition, l'enregistrement correspondant à cette position ordinale devient l'enregistrement courant.

Remarque :

La position absolue d'un enregistrement n'est potentiellement pas fiable. Si l'utilisateur supprime des enregistrements du jeu d'enregistrements; la position ordinale de tous les enregistrements suivants s'en trouve modifiée. Les signets constituent la méthode recommandée pour déplacer l'enregistrement courant. Pour plus d'informations, consultez Signets dans ODBC MFC.

Pour plus d'informations sur la navigation au sein d'un jeu d'enregistrements, consultez Jeu d'enregistrements : défilement (ODBC).

Voir aussi

Concepts

Jeu d'enregistrements (ODBC)