Identifiants automatiques
Stagiaire WDF
Inscrit:
18/08/2003 09:56
De COLMAR (ALSACE)
Post(s): 41
Bonjour à tous.

Supposons 2 fichiers Fic1 et Fic2 et leurs clés respectives Clé1 et Clé2. Ils sont reliés par un fichier de relation FicRel dans lequel se trouve Clé1,Clé2 et CléComposée qui est la clé composée de Clé1 et Clé2 et qui est la clé unique du fichier de relation. Bon jusque là, rien de bien sorcier.

Suppposons à présent (que d'effort d'imagination tout de même) que cette clé composée, je veuille la changer en clé identifiant automatique. Après modification de l'analyse, et modification du fichier phyique, j'obtiens un peu tout et n'importe quoi dans la nouvelle rubrique. Avec une petite procédure qui va bien, je corrige cette rubrique pour chaque enregistrement du fichier, en mettant 1 au premier enregistrement, 2 au deuxième, etc... jusqu'au 433ème. J'ai donc 433 enregistrement numérotés de 1 à 433 sur leur clé unique à identifiant automatique.

Je test mon appli sur ce fichier : aucun problème pour récupérer mes billes. Mais soudain, c'est le drame, tous mes espoirs s'écroulent quand je cherche à créer un nouvel enregistrement. Pour ceux qui ont suivi, il devrait me créer un enregistrement avec comme valeur de la clé unique, 434. Eh bien tenez vous bien, la valeur proposée est 1. Oui 1, comme si c'était le premier enregsitrement du fichier.

Alors moi je me dis que c'est surement une erreur d'index, et je m'empresse de réindexer le fichier (peut-être des pointeurs sur la clé automatique dans cette réindexation). Mais ça résout pas le problème.

Quelqu'un connaitrait il la solution ? Comment faire en sorte qu'il me propose à nouveau des clé automatiques non utilisées ? Merci merci merci.

Homer

Contribution le : 29/03/2004 11:24
Créer un fichier PDF de la contribution Imprimer


Re: Identifiants automatiques
Stagiaire WDF
Inscrit:
18/08/2003 09:56
De COLMAR (ALSACE)
Post(s): 41
Yabadabadou !!!

Excusez moi, je m'emporte...

J'ai trouvé. Il faut bricoler un peu, je l'admets.
Alors effectivement, quelque part, il doit y avoir des pointeur sur le dernier (ou le prochain) id. automatique à utiliser. Actuellement, ces pointeurs étant null, il commence à numéroter à 1, même si il y a déjà 433 enregistrements. Pour mettre en place les pointeurs, rien ne sert de réindexer les fichiers, ça marche pas.

Ce qu'il faut, c'est exécuter ce code :

hLitDernier(FicRel,CleUnik)
FicRel.Cle1 = Val1
FicRel.Cle2 = Val2
FicRel.CleUnik += 1
hAjoute(FicRel,hFixedAuto)
hLitDernier(FicRel,CleUnik)
hSupprime(FicRel,hNumEnrEnCours)

Le hFixedAuto permet de replacer les pointeurs en lui disant à partir de quelle valeur numéroter le prochain identifiant automatique (Valeur courante + 1).

C'est gagné !!!

Quand même, fallait y penser...

Contribution le : 29/03/2004 12:16
Créer un fichier PDF de la contribution Imprimer


Re: Identifiants automatiques
DSI WDF
Inscrit:
06/04/2004 12:07
Post(s): 337
Alors moi je viens d'avoir le même probléme que toi. Mais sur une base qui était déja bien remplie, et vitale. J'ai eu une erreur d'indexation...donc je réindexe, et là, horreur : tous mes IDauto repartent à 1, et donc erreur de doublons à chaque nouvel enregistrement !!!!

En 20 min, à cours d'idée, j'ai refait une moulinette qui à fait un hajoute de tous les enregistrements dans une base vide, ce qui m'à remis le pointeur comme il fallait.

Ton astuce ets à retenir homer, mais on ne peu pas toujours se payer le luxe de redévelopper et redistribuer toute l'appli à chaque réindexation.

Donc si quelqu'un sait comment faire une réindexation propre, qui marche, je suis trés trés trés interessé...

Contribution le : 08/09/2004 10:47
Créer un fichier PDF de la contribution Imprimer


Re: Identifiants automatiques
DSI WDF
Inscrit:
06/04/2004 12:07
Post(s): 337
Bon, en fait je suis dégouté, il suffit de supprimer le fichier .ndx, et le logiciel le recrée comme il faut sans rien demander.

Contribution le : 08/09/2004 11:07
Créer un fichier PDF de la contribution Imprimer


Re: Identifiants automatiques
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bien, je pense que vous y êtes alors...
Homer : pourquoi ne pas avoir ajouté une rubrique IDAuto et conservé la clé composée ?

FicRel(#IdFicRel,Clé1,Clé2,CléComp=Clé1+Clé2)

Cela permet les filtres directs sur respectivement clé1, clé2 avec parcours trié sur CléComp. Mais cela permet aussi une gestion autonome de pointeur (on récupère l'idAuto) ou une relation avec autre fichier...

sinon pas compris l'utilité...

Contribution le : 08/09/2004 11:20
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2