Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Incrémentation sans trous
Lorsque la
clé primaire d'une table Access est bâtie sur un
numéro auto-incrémenté, ce dernier est ignoré dès lors que l'enregistrement est supprimé. Pour des raisons de sécurité, comme ce numéro a déjà été utilisé, il n'est plus jamais rappelé. Et même s'il est conseillé de s'en accommoder, certains contextes peuvent justifier de rétablir une numérotation respectant une suite logique. Cette
astuce montre comment la recréer simplement.
Source et procédure
Pour dérouler les opérations, nous proposons d'appuyer nos démonstrations sur une petite
base de données.
Comme le résume le
volet de navigation sur la gauche de l'écran, cette toute petite
base de données n'est constituée que de deux
tables. Seule la première nous intéresse car elle porte la
clé primaire.
- Dans le volet de navigation, double cliquer sur la table Commerciaux,
Nous l'affichons ainsi en mode
Feuille de données.
Cette
table recense donc quelques commerciaux d'une entreprise, sur un niveau de détail très sobre. Vous notez deux ruptures dans la suite des numéros du premier champ. Il s'agit du champ de la
clé primaire. La première rupture occasionne le passage de l'identifiant 9 à 11. La seconde provoque le passage du numéro 15 au numéro 18. Dans le premier cas, c'est un enregistrement intercalé qui a été supprimé. Dans le second, ce sont deux commerciaux consécutifs qui ont été éliminés. Si vous ajoutez un commercial à la suite avec sa civilité, son nom et son prénom, la numérotation se poursuit naturellement à partir de l'indice 19. Le
champ c_num n'est effectivement pas à renseigner, il s'auto-génère.
- Cliquer droit sur l'étiquette de ligne de l'enregistrement numéro 4,
- Dans le menu contextuel, choisir Supprimer l'enregistrement,
- Puis, valider le message de confirmation qui suit,
Nous venons d'occasionner une nouvelle rupture dans l'énumération. Le numéro 4 ne sera plus jamais utilisé, sauf si nous en décidons autrement. L'
astuce consiste à supprimer ce
champ de la clé primaire puis à le recréer. La
numérotation auto-incrémentée se regénérera naturellement même a posteriori.
- En haut à gauche du ruban Accueil, cliquer sur le bouton Affichage,
Nous basculons ainsi en
mode création de la table.
- Sélectionner le tout premier champ c_num en cliquant sur son étiquette de ligne,
- Puis, enfoncer la touche Suppr du clavier,
Nous touchons à la
structure de la table donc de la
base de données. Cette manipulation est loin d'être anodine. C'est la raison pour laquelle un message d'alerte se déclenche.
- Confirmer en cliquant sur le bouton Oui une première fois puis une deuxième fois,
La
table est désormais dénuée d'identifiant. Nous devons les recréer.
- Cliquer droit sur l'étiquette de ligne du champ c_civ,
- Dans le menu contextuel, choisir Insérer des lignes,
C'est ainsi que nous créons un nouveau champ vide au-dessus du
champ c_civ.
- Dans la zone Nom du champ, taper l'intitulé c_num,
- Dans la zone Type de données, choisir NuméroAuto avec la liste déroulante,
- Ensuite, cliquer droit sur l'étiquette de ce champ c_num,
- Dans le menu contextuel, choisir clé primaire,
Il est aussi possible de cliquer sur le
bouton Clé primaire dans le
ruban Création. Le champ doit toujours être préalablement désigné.
Bref, c'est ainsi que nous définissons ce champ comme celui des
identifiants auto-incrémentés. Avec cette clé, il autorise les relations, il interdit les doublons et il est
indexé.
- Enregistrer les modifications avec le raccourci clavier CTRL + S,
- Puis, cliquer de nouveau sur le bouton Affichage tout à fait à gauche dans le ruban,
Nous revenons ainsi en mode
Feuille de données. Et comme vous pouvez le voir, tous les trous ont disparu dans l'énumération des identifiants. De fait, celle-ci se stoppe plus tôt.
Par contre, il est absolument primordial de comprendre que ce type de manipulation ne peut et ne doit intervenir qu'en début de conception de la
base de données. Elle peut être justifiée après l'importation de données externes mal ordonnancées par exemple. Une fois les
relations établies entre les
tables,
Access vous empêche de procéder ainsi fort heureusement. Les
relations préservent l'intégrité des données. Ne soyez jamais tenté de briser ces
relations, même temporairement. Une fois les numéros réattribués dans la
table parent, de nombreux enregistrements risqueraient de se retrouver orphelins dans la
table enfant, faute de concordance. Sans les supprimer et donc perdre des données, les
relations ne pourraient être rétablies.