Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD10] Erreur de doublons

11 réponses
Avatar
wd_newbie
Bonjour,

j'ai un petit soucis avec une application dont je n'arrive a pas en
trouver la source.

Mon client m'a envoy=E9 les fichiers par e-mail et, heureusement,
j'arrive a reproduire l'erreur sur le poste de d=E9veloppement. Par
contre je n'arrive pas a cerner le pourquoi :


Je pr=E9cise que les fichiers "factures" et "ligne_commande" sont vides

et je fais :

//**************************
HRAZ(Factures) // je vide le cache
Factures.IDMembres=3D Membres.IDMembres // n=B0 de membre
Factures.Date_facture =3D DateSys() // date de la facture
Factures.Valid=E9e =3D Faux // la facture n'est pas valid=E9e
Factures.Login_facture =3D gsUsername // nom de la personne qui rempli
la facture
Factures.Total_facture =3D moTotal // prix total de la facture
Factures.Montant_encaisse =3D moEncaisse // montant pay=E9


SI PAS HAjoute(Factures) ALORS
Trace(HErreurInfo(hErrComplet)) =3D=3D> voir plus bas
Erreur(" Impossible de cr=E9er la facture !!")
RETOUR
SINON
// j'ai mon numero de facture en cours :
numFacture =3D Factures.IDFacture
FIN

//***************************************************

L'erreur se situe au niveau du Hajoute(Facture) , la trace de l'erreur
me donne :


[----------------------------------------------------------------
erreur --------------------------]
La trace de l'erreur me donne :
Dump de l'erreur du module <WD100HF.DLL> <10.00Edh>.

- Appel WL :
Fonction <>, n=B0 de syntaxe <0>

- Niveau : erreur non fatale (EL_ONRETURN)

- Code erreur : 70010

- Code erreur WD55 : 10

- Pas de code d'erreur syst=E8me

- Pas de message d'erreur syst=E8me

- Que s'est-il pass=E9 ?
Des doublons ont =E9t=E9 d=E9tect=E9s pour la cl=E9 <IDFacture> sur le fich=
ier
<Factures>.

- Infos de debug :
iehf=3D30017

- Infos attach=E9es :
EIT_LOGICALTABLENAME : <Factures>
EIT_ITEMNAME : <IDFacture>
EIT_PATHFIC : <C:\Mes Projets\MonProjet\Exe\Factures.FIC>
EIT_PATHNDX : <C:\Mes Projets\MonProjet\Exe\Factures.NDX>

- Identifiant dans le .err : 70907

[-------------------------------------------------------------FIN
erreur --------------------------]



=2E.. ce que je trouve bizzare, c'est que le fichier est vide ... par
contre si je fais une r=E9indexation via la commande du CCmenu
"CCMenu.R=E9parationDonn=E9es()"

ensuite c'est OK, cela devrait donc venir de l'index du fichier, mais
comme ce dernier est cens=E9 =EAtre vide ...le probl=E8me est r=E9solu, mai=
s
je ne vois pas son origine.

Des id=E9es sur la questions ?

Merci d'avance


Olivier

10 réponses

1 2
Avatar
Firetox
Bonjour,

en fait le n° doit etre dans un N° supprimer ou rayé
donc fait une reindexation avec le parametre : hNdxCompactage

ca devrait mettre ton fichier clean et voir si le hajoute renvoi tujours la
meme erreur

Bon dev
@+


"wd_newbie" a écrit dans le message de news:

Bonjour,

j'ai un petit soucis avec une application dont je n'arrive a pas en
trouver la source.

Mon client m'a envoyé les fichiers par e-mail et, heureusement,
j'arrive a reproduire l'erreur sur le poste de développement. Par
contre je n'arrive pas a cerner le pourquoi :


Je précise que les fichiers "factures" et "ligne_commande" sont vides

et je fais :

//**************************
HRAZ(Factures) // je vide le cache
Factures.IDMembres= Membres.IDMembres // n° de membre
Factures.Date_facture = DateSys() // date de la facture
Factures.Validée = Faux // la facture n'est pas validée
Factures.Login_facture = gsUsername // nom de la personne qui rempli
la facture
Factures.Total_facture = moTotal // prix total de la facture
Factures.Montant_encaisse = moEncaisse // montant payé


SI PAS HAjoute(Factures) ALORS
Trace(HErreurInfo(hErrComplet)) ==> voir plus bas
Erreur(" Impossible de créer la facture !!")
RETOUR
SINON
// j'ai mon numero de facture en cours :
numFacture = Factures.IDFacture
FIN

//***************************************************

L'erreur se situe au niveau du Hajoute(Facture) , la trace de l'erreur
me donne :


[----------------------------------------------------------------
erreur --------------------------]
La trace de l'erreur me donne :
Dump de l'erreur du module <WD100HF.DLL> <10.00Edh>.

- Appel WL :
Fonction <>, n° de syntaxe <0>

- Niveau : erreur non fatale (EL_ONRETURN)

- Code erreur : 70010

- Code erreur WD55 : 10

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Des doublons ont été détectés pour la clé <IDFacture> sur le fichier
<Factures>.

- Infos de debug :
iehf0017

- Infos attachées :
EIT_LOGICALTABLENAME : <Factures>
EIT_ITEMNAME : <IDFacture>
EIT_PATHFIC : <C:Mes ProjetsMonProjetExeFactures.FIC>
EIT_PATHNDX : <C:Mes ProjetsMonProjetExeFactures.NDX>

- Identifiant dans le .err : 70907

[-------------------------------------------------------------FIN
erreur --------------------------]



... ce que je trouve bizzare, c'est que le fichier est vide ... par
contre si je fais une réindexation via la commande du CCmenu
"CCMenu.RéparationDonnées()"

ensuite c'est OK, cela devrait donc venir de l'index du fichier, mais
comme ce dernier est censé être vide ...le problème est résolu, mais
je ne vois pas son origine.

Des idées sur la questions ?

Merci d'avance


Olivier
Avatar
wd_newbie
On 19 août, 12:02, "Firetox" wrote:
Bonjour,

en fait le n° doit etre dans un N° supprimer ou rayé
donc fait une reindexation avec le parametre : hNdxCompactage

ca devrait mettre ton fichier clean et voir si le hajoute renvoi tujours la
meme erreur

Bon dev
@+




Merci pour ta reponse, effectivement, comme je le disais dans mon
post, la réindexation a tout remis dans l'ordre.

Ce que j'ai plus de peine a comprendre, c'est le pourquoi ?.
J'avais eu des soucis d'index avec des postes sous Win95 /Win98 (une
histoire de cache a l'écriture si mes souvenirs sont bons ..) mais
jamais avec des machines sous XP.

Amicalement

Olivier

'-------------------
si l'informatique fonctionnait, ce serait mois interressant.
--------------------------------------------------------------------------- ------
Avatar
Firetox
Bonjour,

en fait windev conserve les enregistrement en les rayant (suppression
logique)
et dans certain cas de hajoute le controle d'integrité trouve les enreg rayé
et refuse l'insertion
c'est pour ca que sur des suppression il faut faire le hreindex (et pour les
gros fichier on fait systématiquement une reindexation chaque nuit)

Bon dev
@+


"wd_newbie" a écrit dans le message de news:

On 19 août, 12:02, "Firetox" wrote:
Bonjour,

en fait le n° doit etre dans un N° supprimer ou rayé
donc fait une reindexation avec le parametre : hNdxCompactage

ca devrait mettre ton fichier clean et voir si le hajoute renvoi tujours
la
meme erreur

Bon dev
@+




Merci pour ta reponse, effectivement, comme je le disais dans mon
post, la réindexation a tout remis dans l'ordre.

Ce que j'ai plus de peine a comprendre, c'est le pourquoi ?.
J'avais eu des soucis d'index avec des postes sous Win95 /Win98 (une
histoire de cache a l'écriture si mes souvenirs sont bons ..) mais
jamais avec des machines sous XP.

Amicalement

Olivier

'-------------------
si l'informatique fonctionnait, ce serait mois interressant.
---------------------------------------------------------------------------------
Avatar
wd_newbie
Alors est-ce que je dis une c... si au lieu de faire une réindexation
toutes les nuits, je la lance au démarrage de mon appli ?
(Le volume de données n'st pas très important , 20'000 entrées au max
pour une des tables ... heu ... un des fichiers :-)


Olivier
Avatar
Firetox
Bonjour,

oui c'est comme ca que je fais pour mes inventaire sur base SQLite (base
sans moteur) et pour eviter d'avoir un micro lancé la nuit
le premier poste qui lance l'appli genere l'inventaire journalier pour figer
le stock avant la journée. les autres postes ne feront pas cela car il
detecteront l'inventaire
bien entendu le premier bloque la base le temps de l'inventaire (1 à 2
secondes)

mais pour l'indexation il faudra aussi bloqué les autres le temps de
l'indexation mais attention au temps que cela peut prendre, fait des tests

Bon dev
@+



"wd_newbie" a écrit dans le message de news:

Alors est-ce que je dis une c... si au lieu de faire une réindexation
toutes les nuits, je la lance au démarrage de mon appli ?
(Le volume de données n'st pas très important , 20'000 entrées au max
pour une des tables ... heu ... un des fichiers :-)


Olivier
Avatar
wd_newbie
On 20 août, 20:57, "Firetox" wrote:
Bonjour,

oui c'est comme ca que je fais pour mes inventaire sur base SQLite (base
sans moteur) et pour eviter d'avoir un micro lancé la nuit
le premier poste qui lance l'appli genere l'inventaire journalier pour fi ger
le stock avant la journée. les autres postes ne feront pas cela car il
detecteront l'inventaire
bien entendu le premier bloque la base le temps de l'inventaire (1 à 2
secondes)

mais pour l'indexation il faudra aussi bloqué les autres le temps de
l'indexation mais attention au temps que cela peut prendre, fait des test s

Bon dev
@+

"wd_newbie" a écrit dans le message de news:

Alors est-ce que je dis une c... si au lieu de faire une réindexation
toutes les nuits, je la lance au démarrage de mon appli ?
(Le volume de données n'st pas très important , 20'000 entrées au m ax
pour une des tables ... heu ... un des fichiers :-)

Olivier



Merci pour tout , je vais faire quelques tests !

Bonne journée


Olivier
Avatar
Moua
Firetox a exposé le 20/08/2008 :
Bonjour,

oui c'est comme ca que je fais pour mes inventaire sur base SQLite (base sans
moteur) et pour eviter d'avoir un micro lancé la nuit
le premier poste qui lance l'appli genere l'inventaire journalier pour figer
le stock avant la journée. les autres postes ne feront pas cela car il
detecteront l'inventaire
bien entendu le premier bloque la base le temps de l'inventaire (1 à 2
secondes)

mais pour l'indexation il faudra aussi bloqué les autres le temps de
l'indexation mais attention au temps que cela peut prendre, fait des tests

Bon dev
@+



"wd_newbie" a écrit dans le message de news:

Alors est-ce que je dis une c... si au lieu de faire une réindexation
toutes les nuits, je la lance au démarrage de mon appli ?
(Le volume de données n'st pas très important , 20'000 entrées au max
pour une des tables ... heu ... un des fichiers :-)


Olivier



A les douces joies de la micro-informatique, vivement de bons vieux
serveurs de base de données !
Avatar
Roumegou Eric
Il se trouve que Moua a formulé :
Firetox a exposé le 20/08/2008 :
Bonjour,

oui c'est comme ca que je fais pour mes inventaire sur base SQLite (base
sans moteur) et pour eviter d'avoir un micro lancé la nuit
le premier poste qui lance l'appli genere l'inventaire journalier pour
figer le stock avant la journée. les autres postes ne feront pas cela car
il detecteront l'inventaire
bien entendu le premier bloque la base le temps de l'inventaire (1 à 2
secondes)

mais pour l'indexation il faudra aussi bloqué les autres le temps de
l'indexation mais attention au temps que cela peut prendre, fait des tests

Bon dev
@+



"wd_newbie" a écrit dans le message de news:

Alors est-ce que je dis une c... si au lieu de faire une réindexation
toutes les nuits, je la lance au démarrage de mon appli ?
(Le volume de données n'st pas très important , 20'000 entrées au max
pour une des tables ... heu ... un des fichiers :-)


Olivier



A les douces joies de la micro-informatique, vivement de bons vieux serveurs
de base de données !



Ce débat est un peu passé maintenant (j'étais un chaud partisan des
systèmes IBM) et la "micro" avec les serveurs tiens largement la route
(voire toute la route)
Le vrai débat porterait plutôt sur le SGBD qui avec HF n'est à mon avis
pas la meilleure solution.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Moua
Roumegou Eric a exposé le 22/08/2008 :
Il se trouve que Moua a formulé :
Firetox a exposé le 20/08/2008 :
Bonjour,

oui c'est comme ca que je fais pour mes inventaire sur base SQLite (base
sans moteur) et pour eviter d'avoir un micro lancé la nuit
le premier poste qui lance l'appli genere l'inventaire journalier pour
figer le stock avant la journée. les autres postes ne feront pas cela car
il detecteront l'inventaire
bien entendu le premier bloque la base le temps de l'inventaire (1 à 2
secondes)

mais pour l'indexation il faudra aussi bloqué les autres le temps de
l'indexation mais attention au temps que cela peut prendre, fait des tests

Bon dev
@+



"wd_newbie" a écrit dans le message de news:

Alors est-ce que je dis une c... si au lieu de faire une réindexation
toutes les nuits, je la lance au démarrage de mon appli ?
(Le volume de données n'st pas très important , 20'000 entrées au max
pour une des tables ... heu ... un des fichiers :-)


Olivier



A les douces joies de la micro-informatique, vivement de bons vieux
serveurs de base de données !



Ce débat est un peu passé maintenant (j'étais un chaud partisan des systèmes
IBM) et la "micro" avec les serveurs tiens largement la route (voire toute la
route)
Le vrai débat porterait plutôt sur le SGBD qui avec HF n'est à mon avis pas
la meilleure solution.



Qu’ais-je dit d’autre ?
Avatar
Dc
Bjr,

Roumegou Eric avait soumis l'idée :

Le vrai débat porterait plutôt sur le SGBD qui avec HF n'est à mon avis pas
la meilleure solution.



Suis pas payé par pcsoft :-)) mais j'ai des fichiers qui tournent
24h/24 avec sans arret des effacements et des ajoute, je fais jamais de
reindexation, et j'ai jamais vu ce genre d'erreur...
dsl..


--
-------------------------------------------------------------
www.ctc-soft.com
Gestion biblo-documentaire (free-share)
Comptabilité shareware
Logiciels de Gestion de saisie terrain
Spécialisé Tournées de boulangers
-------------------------------------------------------------
1 2