Numérotation automatique (NuméroAuto)

Finalement, vous vous contenteriez peut-être bien d'une simple numérotation (1,2,3,4,5,6,...), non ?
Revenez en mode création. Choisissez NuméroAuto comme type de données de IDClient :


Access vous assène un message d'erreur. En fait NuméroAuto est une sorte de Numérique Entier long.
Le NuméroAuto a ceci de particulier que ce n'est pas vous qui entrez les données, mais c'est Access qui décide : il va numéroter les clients 1,2,3, ...
Du coup, tous vos beaux IDClient que vous avez rempli consciencieusement seraient écrasés par la nouvelle numérotation !
C'est pourquoi Access préfère vous renvoyer un message comme quoi ce n'est pas possible. Eh bien, on va le faire quand-même ! Non mais !
  1. Supprimez le champ IDClient, ce qui aura pour effet de supprimer ses données, évidemment
  2. Recréez le même champ IDClient, toujours tout en haut, mais précisez tout de suite que c'est un type NuméroAuto
Constatez que, sur le coup, il n'est plus en clé primaire. ce n'est pas grave !
Lancez la table en mode saisie de données :
Et voilà ! Ils sont numérotés ! Peu importe comment, d'ailleurs, ils ne sont pas triés par ordre alphabétique, ni rien : l'important est juste que chaque client possède un identifiant unique.
- Bonjour monsieur !
- Bonjour ! Je suis Monsieur Spielberg, et ma commande de 100 Schmilblicks n'est toujours pas arrivée !
- Un instant, je consulte ma base de données Access. Vous savez que j'ai fait beaucoup de progrès ces derniers temps ?
- Heu oui, bon... Mes schmilblicks ?
- Quel est votre numéro de client, monsieur ?
- 4.
- Alors, oui, je vous que vous êtes notre meilleur client, c'est marqué, juste là, sous mes yeux !
- Oui, merci. Bon, vous me racontez votre vie, ou bien vous finissez par me dire où en est cette commande ?!?!
- Je vais voir avec notre service expédition et on vous rappelle immédiatement. A tout de suite, Cher Client !

Spécificités des NuméroAuto

Vous ne pouvez absolument pas changer un numéro de client à la main. Si vous essayez de modifier 6 en 14 (par exemple), vous subirez un message d'erreur très (trop) discret qui va s'afficher dans la barre d'état (tout en bas de la fenêtre Access).
Le simple fait d'ajouter un client lui attribue le numéro suivant. Entrez Laurent Ruquier :

Numéros ne se suivent pas

Si vous effacez un enregistrement, le numéro est perdu à jamais ! Faisons un test :
  1. Effacez l'enregistrement Chuck Norris :
  2. Constatez le "trou" dans les numéros :
  3. Recréez Chuck Norris dans un nouvel enregistrement (Mais ne l'enregistrez pas - laissez le petit crayon sur la gauche). Il est maintenant numéro 11.
    Dans mon cas, j'ai fait une petite erreur, et j'ai dû effacer et recréer mon champ IDClient, ce qui fait qu'il a tout renuméroté, et le "trou" entre Coluche et Di Caprio a donc disparu, ce qui décale Di Caprio, Ruquier et Norris. Mais ça ne change rien au principe de base.
  4. Appuyez 2 fois sur la touche (Comme si vous voulez annuler ce que vous veniez de faire), et effacez ainsi ce nouvel enregistrement, et recréez directement Chuck Norris, comme ceci :
Et voilà : Le numéro 10 n'a pas eu le temps d'exister...
Cette numérotation automatique n'est donc pas une manière de compter les enregistrements ! Chuck Norris est N°11 (N° 12, chez vous), et pourtant, c'est le 10ème enregistrement.
Et si vous vouliez supprimer les "trous", il vous suffirait de supprimer le champ IDClient, et de le recréer, mais, du coup, tous les clients changeraient de numéro, ce qui n'est pas souhaitable !

Clé primaire proposées par défaut

Maintenant, vous comprenez pourquoi, lors de la création d'une nouvelle table, Access vous demande si vous voulez installer une clé primaire (leçon 2, ici). Il veut simplement ajouter un champ nommé , défini en NuméroAuto.
Mais quel intérêt si on ne sait pas à quoi ça sert ?
Et la clé primaire alors, dans tout ça ?
Dans le cas d'un champ de type NuméroAuto, elle ne sert plus à rien, puisqu'il est impossible d'avoir deux fois le même numéro, puisque c'est Access qui décide. Du coup, que vous mettiez une clé primaire ou pas sur IDClient, ça ne change rien.
(En fait, si, mais seulement quand nous verrons les relations !)

Mauvaise utilisation de la clé primaire

Un dernier mot sur la table T_Pays : Y aurait-il un intérêt à lui adjoindre un champ IDPays en NuméroAuto ? ... Si IDPays devient la clé primaire, vous pourriez alors écrire plusieurs fois le même nom de pays avec des numéros différents, et si vous laissez la clé primaire reste sur le champ Pays, quel serait son intérêt ? ... Dans la table T_Client, Spielberg peut donnier lieu à confusion, mais France, Italie, ou Espagne, non ! Il n'y a pas deux pays dans le monde qui possèdent le même nom, heureusement !

Aucun commentaire:

Enregistrer un commentaire