PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → erreur de doublon sur un identifiant automatique
erreur de doublon sur un identifiant automatique
Iniciado por fahugues, 15,mar. 2006 10:50 - 9 respuestas
Publicado el 15,marzo 2006 - 10:50
bjr !
j'ai un fichier de données X qui contient deja plus d'une centaine d'enregistrements. mais il se fait qu'entre temps j'ai perdu mon analyse et j'ai été obligé de la reconstruire, ensuite j'ai mis à jour mes fichiers et ca a pris normalement.
maintenant il se fait qu'à l'ajout d'un nouvel enregsitrement dans le fichier X qui a un Identifiant automatique, il se pose le problème de doublon sur cette clé justement, la numerotation automatique reprend à 1 au lieu de continuer a la suite des enreg existent, ce qui provoque un conflit de doublon.
quelqu'un a-t-il une idée de solution?
Publicado el 15,marzo 2006 - 11:42
Bonjour,

J'ai eu le même problème en important des données depuis Access qui avaient des clés auto numériques

Ma solution est la suivante...

Créer un fichier Excel avec les data.

Supprimer le fichier HP et le recréer (vide)

Importer les datas depuis excel de cette manière

// code de sauvegarde
// idauto à sauvegarder
nummax={wddest.idauto}

HAjoute(WDDest)
// cet ID est déjà dans la base
SI {wddest.idauto} > nummax ALORS
// suppresion de toutes les lignes avec cet ID
HSupprime(WDDest)
HRecherchePremier(WDDest,idauto,nummax)
TANTQUE HTrouve(WDDest)
HSupprime(WDDest)
HRecherchePremier(WDDest,idauto,nummax)
FIN
// remettre le bon ID
{wddest.idauto} = nummax
// ajouter l'id en forcant son numéro
HAjoute(WDDest,hFixeIdAuto)
SINON
// l'id est plus grand que le plus grand numéro de la table
TANTQUE {wddest.idauto} < nummax
HSupprime(WDDest)
HAjoute(WDDest)
FIN
FIN


De cette manière, même si la source n'est pas triée, on rentre les données en gardant la focntion IDauto juste et la clé d'origine "intacte"
Publicado el 15,marzo 2006 - 12:10
y'a plus simple:

HGèreIntégrité(Faux)
monfichier.marubriquecle = monnouvelid
HAjoute("monfichier",hFixeIdAuto)
HGèreIntégrité(Vrai)
Publicado el 15,marzo 2006 - 12:32
Oui, mais dans ce cas, si ton iD est plus haut que le max de l'idauto mémorisé dans HF , tu plantera la base plus tard.
J'ai eu ce cas c'est pourquoi ja'i mis le code -:)

A+
Publicado el 15,marzo 2006 - 14:54
"Oui, mais dans ce cas, si ton iD est plus haut que le max de l'idauto mémorisé dans HF , tu plantera la base plus tard. "

Pourquoi la base se planterait-elle?
exemple:
l'IDauto est à 7000, lorsque j'ajoute mes ligne il me propose par exemple 6000 et me plante (erreur de doublon). j'execute mon code, je lui met 7001 et il repartira sur cette base.
Je ne comprends pas comment il peut se planter.

Precision: IDauto <> N° Enr
Publicado el 15,marzo 2006 - 16:48
Voir la doc HF sur la fonction Hajoute() pour les détails mais en résumé

Dixit PCSOFT :
Après l'ajout de l'enregistrement, le prochain identifiant automatique calculé par défaut par le moteur Hyper File, sera calculé sans tenir compte de la valeur ajoutée par hForceIdAuto.
Publicado el 15,marzo 2006 - 17:50
vous avez raison mais je vous invite a lire la doc de "hFIXEidauto" et non "hForceIdAuto".
Publicado el 15,marzo 2006 - 18:35
Merci,

J'ai trouvé l'explication avec un exemple clair dans l'aide en allant dans Gestion de l'identifiant lors d'un ajout...

L'explication de base fournit dans Hajoute n'était pas claire et j'avais opté pour la solution la plus sûre au niveau de mon code et de mes données.

Cordiallement

Georgy
Publicado el 15,marzo 2006 - 20:05
Je vais tenter de faire une synthèse sur le sujet.

hFoceIdAuto permet d'écrire un enregistrement avec un identifiant
quelconque.
Si cet identifiant a déjà été utilisé il y aura erreur de doublon.
L'identifiant automatique du fichier n'est pas modifié.
Cette technique est utilisé par la réplication.

hForceIdAuto permet de modifier l'identifiant d'un fichier.
Il n'est pas possible de définir un identifiant automatique inférieur à
celui mémorisé dans le fichier.
Cette technique est utilisé par la rélication pour définir la début de la
plage des enregistrements de chacun des abonnés.

--
Cordialement.

Patrick Bouquet
Membre WINDASSO - Association des utilisateurs WxxDEV(c)
http://www.windasso.org


"hugues. F" <fahugues@gmail.com> a écrit dans le message de news:
4417cd0a$1@news.pcsoft.fr...


bjr !
j'ai un fichier de données X qui contient deja plus d'une centaine
d'enregistrements. mais il se fait qu'entre temps j'ai perdu mon analyse
et j'ai été obligé de la reconstruire, ensuite j'ai mis à jour mes
fichiers et ca a pris normalement.
maintenant il se fait qu'à l'ajout d'un nouvel enregsitrement dans le
fichier X qui a un Identifiant automatique, il se pose le problème de
doublon sur cette clé justement, la numerotation automatique reprend à 1
au lieu de continuer a la suite des enreg existent, ce qui provoque un
conflit de doublon.
quelqu'un a-t-il une idée de solution?
Publicado el 16,marzo 2006 - 07:10
Bonjour,

je vous suggère vivement d'éviter l'utilisation des identifiants auto, la meilleur des choses est d'utiliser une procedure global de gestion des clé unique de type chaines pour les fichiers de données et bye bye les problèmes , j'ai opté à ça depuis la version 5.5 surtout si on imagine que notre base de données fonctionnera sur plusieurs postes et plusieurs
utilisateurs.... il faut penser à ça !!!!

Les ident. auto peuvent être modifiés après une réindexation et après un grand nombre de suppression d'enregistrements.( je pense que c'est ça qui m'a poussé avant à opter pour les chaines texte)



Bon Dev.

AliDev7@yahoo.fr