PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → doublon sur identifiant automatique
doublon sur identifiant automatique
Iniciado por Christian SY, 10,dic. 2015 13:54 - 9 respuestas
Miembro registrado
98 mensajes
Publicado el 10,diciembre 2015 - 13:54
Bonjour,

j'ai un problème sur un fichier avec identifiant automatique. Un message s'affiche comme quoi il y a un doublon sur un identifiant automatique, ce qui ne devrait pas se produire en théorie. En effet, cet identifiant est calculé automatiquement par le système HFSQL et nous n'avons pas la gestion de cet identifiant. Comment cela est-il possible ?
Même en changeant le numéro d'identifiant (en rouge) lors de l'affichage de la fenêtre d'erreur, rien n'y fait.
Ensuite, après modification, une fenêtre s'affiche avec le message suivant :
Que s'est-il passé ?
Des doublons ont été détectés pour la clé <F_ident> sur le fichier X.
Code errreur : 70010
Niveau : erreur non fatale (EL_ONRETURN)
Dump de l'erreur du module WD190HF.DLL (19.0.102.2)
Identifiant des informations détaillées (.err) : 70907
Informations de debogage :
IEWDHF=30.18
Module=<WDHF>
Version <19.0.102.2>

La réindexation ne change rien, l'incrémentation automatique de l'identifiant semble bloquée (au n° 7917 dans le 2ème cas)
J'ai eu ce problème sur 2 sites différents sur des installations en réseau avec le même nom de fichier. L'erreur se produit sur un poste client.

Quelqu'un a-t-il une idée ?

--
Christian SY
Publicado el 07,enero 2016 - 13:47
Bonjour,

Je rencontre le même problème depuis fin décembre alors que nous n'avons pas modifié notre logiciel.

Avez-vous pu le solutionner? Comment?

Bonne journée
Publicado el 07,enero 2016 - 19:10
Non, j'ai lancé WDoptimiseur pour réparer.
Ceci dit ce n'est pas normal qu'un identifiant automatique soit en doublon vu qu'il est par définition automatique et non gérable par programmation.
Encore une bizarerie !!!!!
Miembro registrado
119 mensajes
Popularité : +1 (1 vote)
Publicado el 07,enero 2016 - 21:03
Bonsoir
J'ai rencontré une fois ce probleme sur une application mais en fait l'erreur venait de moi
J'avais un champ telephone sur lequel j'effectuai un hlitrecherchepremier pour savoir si je n'avais psa créé ce numero.
Du coup mon hraz d'avant la saisi etait annulé et le hajoute signalait donc le doublon.
Ce n'est certainement pas çà mais on ne sait jamais

Cordialement
José
Miembro registrado
1.623 mensajes
Popularité : +100 (114 votes)
Publicado el 07,enero 2016 - 21:34
Bonsoir !

Oui je vous conseille de tester la valeur de F_ident AVANT le Hajoute : Il devrait etre vide ! S'il ne l'est pas, il y a un soucis dans le code (peut etre un EcranVersFichier mal placé..)
Publicado el 07,enero 2016 - 22:50
Bonjour

Voici un code que j'avais trouvé il y a longtemps je ne sais plus où...
Je m'en suis servi une ou deux fois. Il avait réglé mes problèmes mais ce qui était sûr, le problème venait de moi...et pas de Windev...

Appel de la fonction où Clé doit être unique (ça tombe bien).
Dis nous si cela résout ton problème.
cdt
ElPato

(à essayer sur une copie du fichier !)

DoublonRepare(NomDuFichierARéparer,Clé,RépertoireDuFichier)
HRéindexe(NomDuFichierARéparer, hNdxSuppression)


PROCEDURE DoublonRepare(nomfic, nomIdSlt, nomrep)
Msg est une chaîne
Sablier(Vrai)
HTransactionDébut("TRS"+nomfic)

HChangeRep(nomfic,nomrep)

DernierIdFichier est un entier
DernierIdCalculé est un entier

HLitDernier(nomfic, nomIdSlt)
DernierIdFichier = {nomfic + "." + nomIdSlt,indRubrique}
Msg = "Dernier ID connu " + DernierIdFichier

HAjoute(nomfic,hIgnoreDoublon+hIgnoreIntégrité+hAffecteParcours)
DernierIdCalculé = {nomfic + "." + nomIdSlt,indRubrique}

SI DernierIdCalculé < DernierIdFichier ALORS
Msg = Msg + RC + "Problème détecté, correction en cours"
//DélaiAvantFermeture(500)
info(Msg)
//maj de la valeur de la rubrique ID auto
{nomfic + "." + nomIdSlt,indRubrique} =DernierIdFichier + 1
//Maj dans l'en-tête du fichier
HModifie(nomfic,hNumEnrEnCours,hIgnoreDoublon+hIgnoreIntégrité+hFixeIdAuto+hAffecteParcours)
SINON
Msg = Msg + RC + "Pas de problème d'identifiant"
//DélaiAvantFermeture(500)
info(Msg)
FIN
// suppression de l'enregistrement créé par Hajoute
HSupprime(nomfic)

// termine la transaction
HTransactionFin()
//Msg = Msg + RC + "Traitement terminé pour le fichier "+nomfic+" !"+rc+"Une réindexation des fichiers va commencer...."
Sablier(Faux)

//DélaiAvantFermeture(0)
Publicado el 08,enero 2016 - 09:40
Salut,

oui c'est bien ta procédure mais c'est sur une clé unique et non sur un identifiant automatique. Avant ton HAjoute, comment peux-tu tester l'identifiant et l'incrémenter ?
En règle générale, les doublons sont gérés en amont dans toutes les applications, en tout cas les miennes oui.
Donc il ne devrait pas y avoir de problème de doublon (sur une clé unique) si c'est bien géré. De plus dans HAjoute, l'identifiant est incrémenté automatiquement.
Je pense que de la part de PCSOFT, il devrait exister une procédure automatique qui répare les identifiants automatiques en cas de doublons. Ce n'est pas à nous, programmeurs, de "bidouiller" une procédure à ce sujet.
Publicado el 21,abril 2017 - 23:11
Bonjour / WIndev 19
Plusieurs centaines d'utilisateurs utilisent mon logiciel.
Certaines bases comptes plusieurs millions d'enregistrement
Parfois, la saisie se bloque pour 'faux' doublon

Je rencontre le même problème sur un autre logiciel contenant quelques milliers d'enregistrement

J'ai supprimé mes index et les ai recréé ; idem

J'ai transposé ma base sur un autre système/micro Idem

Si je fais une procédure d'export et de ré-import, j'obtiens une base identique et ça fonctionne !!!!
Merci pour votre avis
Cordialement
Miembro registrado
2.566 mensajes
Popularité : +222 (260 votes)
Publicado el 24,abril 2017 - 16:08
Changer de sgbd ? :p

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Publicado el 24,abril 2017 - 16:56
Bonjour,

par expérience, ce que tu décris est un index cassé soit par un problème
matériel lors d'une écriture, par exemple coupure de courant, réseau,
etc. soit par l'usage de HF classique en mode réseau/partage de fichier
et donc les problèmes d'oplock bien connu qui vont avec.


Pour réparer, il faut supprimer l'index et le recréer, soit utiliser le
mode 5 (de mémoire) de réindexation de l'utilitaire fourni, soit encore
faire le travail par code avec un hajoute en mode hfixeIDAuto suivi d'un
hdelete de cet enreg

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 4/21/2017 à 3:11 PM, DAVID Gilles a écrit :
Bonjour / WIndev 19
Plusieurs centaines d'utilisateurs utilisent mon logiciel.
Certaines bases comptes plusieurs millions d'enregistrement
Parfois, la saisie se bloque pour 'faux' doublon

Je rencontre le même problème sur un autre logiciel contenant quelques
milliers d'enregistrement

J'ai supprimé mes index et les ai recréé ; idem

J'ai transposé ma base sur un autre système/micro Idem

Si je fais une procédure d'export et de ré-import, j'obtiens une base
identique et ça fonctionne !!!!
Merci pour votre avis
Cordialement