[WD10] Erreur de doublons

Le
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é 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 fich=
ier
<Factures>.

- Infos de debug :
iehf=30017

- 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, mai=
s
je ne vois pas son origine.

Des idées sur la questions ?

Merci d'avance


Olivier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Firetox
Le #16576731
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"
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
- 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 : EIT_PATHNDX :
- 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
wd_newbie
Le #16577001
On 19 août, 12:02, "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
@+




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.
--------------------------------------------------------------------------- ------
Firetox
Le #16576991
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"
On 19 août, 12:02, "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
@+




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.
---------------------------------------------------------------------------------
wd_newbie
Le #16586541
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
Firetox
Le #16586531
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"
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
wd_newbie
Le #16589671
On 20 août, 20:57, "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 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"
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
Moua
Le #16597551
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"
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 !
Roumegou Eric
Le #16598061
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"
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é)
Moua
Le #16598511
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"
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 ?
Dc
Le #16712271
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
-------------------------------------------------------------
Publicité
Poster une réponse
Anonyme