Propriété Form.Bookmark (Access)

Utilisez la propriété Bookmark avec les formulaires pour définir un signet qui identifie de façon unique un enregistrement particulier dans la table, la requête ou l’instruction SQL sous-jacente du formulaire. Variant en lecture/écriture.

Syntaxe

expression. Signet

expressionVariable qui représente un objetForm.

Remarques

Remarque

Vous recherchez ou définissez la propriété Bookmark d’un formulaire indépendamment de la propriété ADO Signet ou DAO Bookmark d’une table ou d’une requête sous-jacente.

Lorsqu’un formulaire dépendant est ouvert en mode Formulaire, chaque enregistrement reçoit un signet unique. Dans Visual Basic, vous pouvez enregistrer le signet de l’enregistrement actif en affectant à la valeur de la propriété Bookmark du formulaire une variable de type chaîne de caractères. Pour revenir à un enregistrement enregistré après être passé à un autre enregistrement, attribuez à la propriété Bookmark du formulaire la valeur de la variable chaîne de caractères enregistrée. Utilisez la fonction StrComp pour comparer une variable Variant ou chaîne à un signet, ou lors de la comparaison d’un signet à un signet. Le troisième argument de la fonction StrComp doit être défini sur une valeur nulle (zéro).

Remarque

Les signets ne sont pas enregistrés avec les enregistrements qu’ils représentent et ne sont valides que lorsque le formulaire est ouvert. Ils sont recréés par Microsoft Access à chaque ouverture d'un formulaire dépendant.

Il n’existe aucune limite au nombre de signets que vous pouvez enregistrer si chacun est enregistré avec une variable de chaîne unique.

La propriété Bookmark n’est disponible que pour l’enregistrement actif du formulaire. Pour enregistrer un signet dans un enregistrement différent de l’enregistrement actif, déplacez-vous jusqu’à cet enregistrement et définissez comme paramètre de la propriété Bookmark une variable chaîne de caractères qui identifie cet enregistrement.

Utilisez des signets sous une forme entièrement basée sur des tables Access. Toutefois, il se peut que d'autres produits de base de données ne prennent pas en charge les signets. Par exemple, vous ne pouvez pas utiliser de signets dans un formulaire basé sur une table liée qui n'a pas d'index primaire.

L'actualisation d'un formulaire annule tous les signets définis sur les enregistrements de ce formulaire. Toutefois, le choix de l’option Actualiser dans le menu Enregistrements n’affecte pas les signets.

Étant donné qu’Access crée un signet unique pour chaque enregistrement dans le recordset d’un formulaire lors de l’ouverture d’un formulaire, le signet d’un formulaire ne fonctionne pas sur un autre jeu d’enregistrements, même si les deux recordsets sont basés sur la même table, requête ou instruction SQL. Par exemple, supposons que vous ouvrez un formulaire lié à la table Customers . Si vous ouvrez la table Customers à l’aide de Visual Basic, puis utilisez la méthode ADO Seek ou la méthode DAO Seek pour localiser un enregistrement spécifique dans la table, vous ne pouvez pas définir la propriété Bookmark du formulaire sur l’enregistrement de table actif. Pour effectuer ce type d’opération, vous pouvez utiliser la méthode ADO Find ou la méthode DAO Find avec la propriété RecordsetClone du formulaire.

Une erreur se produit si vous définissez la propriété Bookmark à l’aide d’une variable chaîne de caractères et essayez ensuite de revenir à cet enregistrement après sa suppression.

La valeur de la propriété Bookmark est différente d’un numéro d’enregistrement.

Exemple

Pour tester l’exemple suivant avec l’exemple de base de données Northwind, vous devez ajouter un bouton de commande nommé cmdFindContactName au formulaire Suppliers , puis ajouter le code suivant à l’événement Click du bouton. Lorsque l'utilisateur clique sur le bouton, il est invité à taper une portion du nom du contact à retrouver. Si le nom est retrouvé, la propriété Bookmark du formulaire prend la même valeur que la propriété DAO Bookmark de l'objet Recordset, qui déplace l'enregistrement actif du formulaire sur le nom retrouvé.

Private Sub cmdFindContactName_Click() 
 
 Dim rst As DAO.Recordset 
 Dim strCriteria As String 
 
 strCriteria = "[ContactName] Like '*" & InputBox("Enter the " _ 
 & "first few letters of the name to find") & "*'" 
 
 Set rst = Me.RecordsetClone 
 rst.FindFirst strCriteria 
 If rst.NoMatch Then 
 MsgBox "No entry found.", vbInformation 
 Else 
 Me.Bookmark = rst.Bookmark 
 End If 
 
 Set rst = Nothing 
 
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.