formateur informatique

Générer une clé primaire textuelle avec Access

Accueil  >  Bureautique  >  Access  >  Access Astuces  >  Générer une clé primaire textuelle avec Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Générer une clé primaire de texte

Une clé primaire de base de données désigne un champ dans lequel les enregistrements sont forcément différents et uniques. A ce titre, il n'est pas rare de le typer en NuméroAuto. Dès lors, Access se charge de générer automatiquement la clé primaire auto-incrémentée et qui n'a jamais été utilisée. Mais dans certains contextes, cette clé est un assemblage de caractères et de numéros. Dès lors, elle ne peut plus être auto-incrémentée par Access. Le défi consiste donc à pouvoir la générer à la volée pour les besoins d'un formulaire de création par exemple. Et cette astuce montre comment construire cette nouvelle clé automatiquement, absolument nécessaire pour l'insertion de nouveaux enregistrements.



Source et procédure
Des données dédiées nous attendent dans une petite base de données qu'il convient de récupérer. En consultant le volet de navigation sur la gauche de l'écran, vous notez que cette base de données est composée de deux tables, d'une requête ajout et d'un formulaire.
  • Dans ce volet, double cliquer sur le formulaire f_ajout pour l'exécuter,
Ce formulaire propose de créer une nouvelle activité de sortie à insérer dans la table t_act_new.

Formulaire Access de création avec listes déroulantes reliées entre elles

Pour cela, il s'agit de définir un département, une ville, une activité à l'aide des trois listes déroulantes mais aussi une désignation dans la zone Raison sociale. Sur la droite du formulaire, vous constatez de même la présence d'une zone intitulée Nouvelle clé. Elle est verrouillée. L'utilisateur ne peut y accéder. Cette clé primaire est essentielle pour accepter la création du nouvel enregistrement dans la table. Comme nous l'expliquions, elle doit se générer automatiquement.
  • Dans le volet de navigation, double cliquer sur la table t_act_new,
Nous l'affichons ainsi en mode Feuille de données.

Table Access avec clé primaire de texte à générer automatiquement

Nous y retrouvons bien les informations à préciser depuis le formulaire et à insérer dans les champs respectifs. Mais comme vous pouvez le voir, la clé primaire en première colonne est effectivement un assemblage de textes et de numéros.

Champ de la clé primaire typé en texte court sans incrémentation automatique dans la table Access

Vous obtenez la confirmation, certes évidente, en affichant la table en mode création. Ce champ de la clé primaire est typé comme un texte court. Nous confirmons donc que l'incrémentation naturelle n'est pas envisageable.



Nouvelle clé de texte incrémentée
Pour générer la nouvelle clé unique rendant possible la création, nous pouvons exploiter la fonction Access MaxDom. Celle-ci va retourner l'enregistrement le plus grand alphabétiquement, soit celui dont la clé primaire est associée au numéro le plus élevé. Bien sûr et contrairement à l'exemple de la capture, pour respecter cette progression alphabétique avec pérennité, il faut se baser sur des ordres de grandeur plus importants, comme act-1000 par exemple. En effet textuellement, le nombre 11 est considéré comme plus petit que le nombre 2. Sur cette clé, nous devons isoler le numéro en supprimant le préfixe act-. Ainsi, nous pourrons l'incrémenter. Et sur ce nouveau numéro incrémenté, nous devrons adjoindre le préfixe supprimé, soit : act-. L'insertion pourra alors avoir lieu puisque tous les renseignements nécessaires seront fournis.

Requête Access d-ajout d-enregistrements avec liaisons dynamiques sur les champs du formulaire

En affichant la requête d'ajout en mode création, vous constatez que toutes les correspondances sont prêtes. Mais à ce stade, la zone de saisie clé du formulaire ne génère pas encore la combinaison attendue. L'insertion est donc proscrite pour l'instant.

Dernière précision, avant l'exécution de la requête Ajout par le bouton du formulaire, une action de macro actualise toutes les données. Cette actualisation aura pour effet de regénérer la clé au dernier indice, précisément avant l'insertion, dans le cadre d'une exploitation multi-utilisateur de l'application.
  • Revenir sur le formulaire et cliquer sur la flèche du bouton Affichage dans le ruban Accueil,
  • Dans la liste, choisir le mode création,
  • Sur le formulaire en conception, cliquer sur la zone de texte grisée pour la sélectionner,
La feuille de propriétés est nécessaire pour la suite des opérations. Elle est généralement placée sur la droite de l'écran. Si vous ne la voyez pas, vous devez cliquer sur le bouton du même nom dans le ruban contextuel Création.
  • Activer l'onglet Données de cette feuille de propriétés,
  • Puis, cliquer dans la zone de sa propriété Source contrôle pour l'activer,
  • Taper le symbole égal (=) pour initier la syntaxe de la source de données,
  • Inscrire la fonction donnant la valeur maximale, suivie d'une parenthèse, soit : MaxDom(,
  • Inscrire le nom du champ à analyser entre guillemets et entre crochets, soit : "[s_id]",
  • Taper un point-virgule (;) pour passer dans l'argument de la table concernée,
  • Inscrire le nom de la table entre guillemets, soit : "t_act_new",
  • Puis, fermer la parenthèse de la fonction MaxDom et valider la syntaxe par la touche Entrée,
Fonction Access maxDom pour récupérer la valeur de table la plus grande dans un champ du formulaire

Nous ignorons donc le dernier argument facultatif de cette fonction. Il concerne le critère. En effet, nous souhaitons récupérer la valeur la plus grande sans concession.
  • Enregistrer (CTRL + S) et exécuter le formulaire (F5),
Récupérer la dernière clé primaire de texte sur un formulaire Access avant insertion

Comme vous pouvez le voir, nous récupérons bien la dernière clé de la table. La syntaxe que nous avons construite est la suivante : =MaxDom("[s_id]";"t_act_new"). Mais elle ne nous permet pas encore de construire la nouvelle clé. Son numéro doit être incrémenté. L'opération ne consiste pas simplement à ajouter une unité. En l'état, cette clé est encore un texte. L'idée consiste à ne conserver que le numéro pour l'incrémenter puis à lui associer de nouveau la chaîne de caractères en préfixe. Pour supprimer cette chaîne dans un premier temps, nous devons exploiter la fonction Access Remplacer.
  • Revenir dans la vue en conception du formulaire,
  • Sélectionner de nouveau la zone grisée de la clé calculée,
  • Dans la zone Source contrôle, cliquer après le symbole égal pour y placer le point d'insertion,
  • Inscrire la fonction de substitution suivie d'une parenthèse, soit : Remplacer(,
Ainsi, nous passons d'ores et déjà la chaîne retournée par le calcul de la fonction MaxDom en premier paramètre. En deuxième paramètre, nous devons lui indiquer quel est le texte à remplacer dans cette chaîne. En troisième paramètre, nous devons lui fournir le texte de remplacement, soit une chaîne vide.
  • Cliquer à la fin de la syntaxe pour placer le point d'insertion après la fonction MaxDom,
  • Taper un point-virgule (;) pour passer dans l'argument du texte à remplacer,
  • Inscrire le préfixe à remplacer entre guillemets, soit : "act-",
  • Taper un point-virgule (;) pour passer dans l'argument du texte de remplacement,
  • Inscrire deux guillemets ("") pour supprimer ce préfixe,
  • Fermer la parenthèse de la fonction Remplacer,
  • Ajouter une unité à ce calcul, soit : +1,
  • Valider la syntaxe par la touche Entrée et enregistrer les modifications,
  • Enfin, exécuter le formulaire avec la touche F5 du clavier,
Récupérer et incrémenter automatiquement la dernière clé primaire à utiliser pour l-insertion sur un formulaire Access



Comme vous le constatez, nous avons parfaitement réussi à isoler le numéro de la dernière clé que nous avons ensuite incrémenté. Il ne nous reste plus qu'à replacer la chaîne de caractères en préfixe pour que le formulaire de création devienne opérationnel.
  • Revenir sur le formulaire en conception,
  • Sélectionner la zone grisée de la clé,
  • Dans sa propriété Source contrôle, compléter la syntaxe comme suit :
="act-" & Remplacer(MaxDom("[s_id]"; "t_act_new"); "act-"; "") + 1

Nous replaçons le préfixe de la clé incrémentée par une simple concaténation.
  • Valider la syntaxe et enregistrer les modifications,
  • Exécuter le formulaire avec la touche F5 du clavier,
Nouvelle clé primaire de texte auto-incréémentée sur formulaire Access

La nouvelle clé auto-générée apparaît parfaitement construite. Si vous renseignez toutes les informations demandées et que vous cliquez sur le bouton Ajouter, un message s'affiche confirmant la création de l'enregistrement avec cette nouvelle clé. Le formulaire se vide et l'ancienne clé reste figée en l'absence d'un nouvel événement. Mais à la moindre action, comme par exemple au choix d'un département dans la première liste déroulante, la clé s'actualise aussitôt sur le prochain numéro. Et si vous consultez le dernier enregistrement de la table t_act_new, vous confirmez la présence de l'activité ainsi construite parfaitement référencée avec sa clé primaire textuelle.

Création automatique du nouvel enregistrement dans la table Access avec une clé primaire de texte auto-incrémentée

Petite précision qui a son importance : les clés utilisées sont un exemple, vous l'aurez compris. Elles ne permettent pas de pérenniser le classement alphabétique. Pour une exploitation fiable de ce système, il faut choisir des ordres de grandeur plus conséquents, comme act-1000 pour la première clé ou encore act-10000 si de nombreuses créations sont à entreprendre.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn