Jean Sympa a écrit :
Bonjour à toutes et à tous,
Base Anomalie du dernier enregistrement
Quand j'ai enregistré le dernier enregistrement, j'ai eu une erreur.
J'ai pensé à tort que l'enregistrement n'avait pas eu lieu. Or,
l'enregistrement, est présent dans la table correspondante avec le
numéro 23. Mais, il est absent dans le formulaire où le dernier
enregistrement porte le numéro 22.
Bonjour Jean,
Qu'est-ce qui te fait dire qu'il est absent dans le formulaire ? Comment
as-tu vérifié qu'il l'était effectivement ?
As-tu bien procédé à une vérification autre que sur le simple numéro,
afin de vérifier qu'il avait bien une cohérence entre ce que tu voyais
et ce que tu pensais voir ? Par exemple, lorsque tu parles de
"l'enregistrement 22" est tu bien certain que ce numéro "22", que tu
vois dans ton formulaire, est bien le même que le numéro "22" que tu
vois dans ta table et signifie la même chose ?
Pour t'aider à répondre à cette dernière question, j'ai un indice à te
proposer : tu ne peux y répondre "oui", que si c'est toi-même qui a
placé, dans ton formulaire, une zone faisant référence à un champ
particulier de ta table ; si tu n'as pas placé un tel champ dans ton
formulaire, je ne vois pas comment tu peux établir une relation entre le
numéro que tu vois sur le compteur d'enregistrements (le "22" en bas de
ton formulaire) et le champ de ta table.
En l'occurrence, tu l'as remarqué sur l'enregistrement ayant la clef
primaire 23, mais le décalage est pré-existant ; ainsi, si tu regardes
le denier enregistrement présenté par ton formulaire, alors qu'il est
présenté comme étant le 22ème, tu t'apercevras que dans ta table, il ne
porte pas le numéro 22... Ça, c'est normal, puisque ton formulaire
présente le contenu de ta table, non pas en triant sur la clef primaire,
mais sur l'ordre alphabétique du champ "Titre" ; par hasard, i:l aurait
pu se produire que le dernier tuple de ta table soit également le
dernier dans l'ordre alphabétique, mais en dehors de cette hypothèse, il
n'y a aucune raison particulière pour que le dernier enregistrement
présenté par ton formulaire, soit le dernier tuple de ta table.
Mais alors, te demandes-tu, "pourquoi diable la clef primaire de mon
dernier tuple est-elle 23, alors que le dernier enregistrement présenté
apparaît comme étant le 22ème ? Il en manque un, où est-il ?" ; en fait
tu te trompes, il ne t'en manques pas un, mais deux ! Regardes le
premier tuple de ta table, il porte le numéro "0" ; comme le dernier
enregistrement porte le numéro "23", cela pourrait vouloir dire que 24
enregistrement existent (celui portant la clef "0" étant le premier,
celui portant la clef "1" étant le deuxième,... celui portant la clef
"23" étant donc le 24ème).
On en revient, une fois encore, à une discussion ancienne, aux termes de
laquelle il a été rappelé qu'il était conseillé de ne pas employer la
clef primaire à autre chose qu'à identifier, de manière unique, un tuple
(en enregistrement de la table) ; même une clef primaire
auto-incrémentée, comme c'est le cas de la tienne, ne peut pas servir de
compteur de tuples ; dans ton exemple, tu as oublié que tu avais
supprimé 2 enregistrements, ceux portant les clefs primaires 16 et 17 ;
si l'on reprend notre énumération du paragraphe précédent, le tuple
portant la clef "14" est le 15ème enregistrement, celui portant la clef
"15" le 16ème, comme il n'y a plus d'enregistrement portant la clef 16,
ni la clef 17, celui portant la clef 18 est donc le 17ème et ainsi de
suite pour parvenir au tuple portant la clef primaire "23" qui est donc,
bel et bien, le 22ème de ta table.
Tous tes enregistrements sont bien présentés par ton formulaire, et ton
interrogation ne provient que d'une vérification conduite sur un
raisonnement vicié par un emploi "contre nature" d'une clef primaire
auto-incrémentée, associé à un tri des données d'une table dont des
tuples ont été supprimés à l'usage.
Espérant avoir aidé.
A+
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]