Précédent   Forum des professionnels en informatique > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2012, 10h46   #1
Invité régulier
 
Homme
Apprenti BTS Developpeur d'Applications
Inscription : janvier 2012
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Apprenti BTS Developpeur d'Applications

Informations forums :
Inscription : janvier 2012
Messages : 36
Points : 9
Points : 9
Par défaut Erreur de doublons simple.

Bonjour à tous et à toutes,

Voici mon simple problème, j'ajoute des données dans une table temporaire (après avoir supprimer tous les enregistrement)et la windev me sort une erreur de doublon .

J'ai deux clé primaire que je vérifie et lorsque je vérifie mes données il peut y avoir (par exemple) le même n° d'Id mais pas le même Id ou vice-versa.

Mon code marchait normalement hier et ce matin cette erreur de doublons, voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
HSupprimeTout(Totaltmp)
Sablier(Vrai)
sMaChaîne = fLitLigne(nDB_XX_CDE ) 	 
TANTQUE sMaChaîne <> EOT
[....Traitement....]
HLitRecherchePremier(Totaltmp,PRIMARY,Totaltmp.PRIMARY)
SI PAS HTrouve(Totaltmp) ALORS
	HAjoute(Totaltmp)
SINON
FIN
sMaChaîne = fLitLigne(nDB_XX_CDE)
FIN
Voilà, Merci d'avance
Cordialement,
Theo.H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 10h50   #2
Membre Expert
 
Homme Nicolas Jeanneau
Développeur informatique
Inscription : octobre 2010
Messages : 638
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Jeanneau
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2010
Messages : 638
Points : 1 020
Points : 1 020
Bonjour,

dans ce cas tu as 2 clefs en doublons et une clef composée unique. Vérifies dans ton analyse que cela se présente bien comme cela.

à bientôt,

Nicolas
Nicolas_Jeanneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 10h52   #3
Invité régulier
 
Homme
Apprenti BTS Developpeur d'Applications
Inscription : janvier 2012
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Apprenti BTS Developpeur d'Applications

Informations forums :
Inscription : janvier 2012
Messages : 36
Points : 9
Points : 9
Bonjour Nicolas,

Oui j'ai bien deux clé en doublon et une clé unique PRIMARY composée.

Cordialement,
Theo.H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 10h52   #4
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 936
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 936
Points : 1 328
Points : 1 328
Ca me paraît normal ton histoire de doublon :
Code :
1
2
3
4
5
6
HLitRecherchePremier(Totaltmp,PRIMARY,Totaltmp.PRIMARY)
SI PAS HTrouve(Totaltmp) ALORS
// ici ?????
	HAjoute(Totaltmp)
SINON
FIN
Regarde les valeurs que tu as dans totaltmp avant de faire le hajoute : logiquement, tu dois avoir une valeur déjà existante dans le fichier...

De plus, tu fais une recherche sur ton fichier avec une valeur de ton fichier...
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 10h59   #5
Invité régulier
 
Homme
Apprenti BTS Developpeur d'Applications
Inscription : janvier 2012
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Apprenti BTS Developpeur d'Applications

Informations forums :
Inscription : janvier 2012
Messages : 36
Points : 9
Points : 9
Bonjour frenchsting,

Je n'ai rien dans ma table vu que je supprime tout, après pour la recherche je ne comprends pas ce que tu veux dire (désolé je suis débutant.) mais cela me parait logique que je vérifie dans mon fichier si mes deux cléfs (donc ma clef primary) existe déjà non?

Cordialement,
Theo.H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h12   #6
Membre Expert
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 936
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 936
Points : 1 328
Points : 1 328
Normal cette recherche. Mais tu fais :
Code :
HLitRecherchePremier(Totaltmp,PRIMARY,Totaltmp.PRIMARY)
Normalement, on fait :
Code :
1
2
UneValeurDansUneVariable = AffectationDeLaVariable()
HLitRecherchePremier(Totaltmp,PRIMARY,UneValeurDansUneVariable)
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h14   #7
Invité régulier
 
Homme
Apprenti BTS Developpeur d'Applications
Inscription : janvier 2012
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Apprenti BTS Developpeur d'Applications

Informations forums :
Inscription : janvier 2012
Messages : 36
Points : 9
Points : 9
Le problème est que je ne peux pas connaître la valeur de cette variable, cela pose un problème ou est-ce que ton idée fonctionne quand même?

Merci d'user de ton temps,
Cordialement,
Theo.H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h39   #8
Membre Expert
 
Homme Nicolas Jeanneau
Développeur informatique
Inscription : octobre 2010
Messages : 638
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Jeanneau
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2010
Messages : 638
Points : 1 020
Points : 1 020
à quel moment connais-tu la valeur de ce champ ? Car sinon je ne vois pas ce que tu vas ajouter comme valeur ...
Nicolas_Jeanneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h45   #9
Invité régulier
 
Homme
Apprenti BTS Developpeur d'Applications
Inscription : janvier 2012
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Apprenti BTS Developpeur d'Applications

Informations forums :
Inscription : janvier 2012
Messages : 36
Points : 9
Points : 9
L'utilisateur va le rentrer mais moi j'ai juste une idée globale de ce qui sera rentrer, je n'ai pas les valeurs exactes.

Un exemple de données :

[CODE]... 0045141902 00090 CODE]

Ce sont mes deux cléfs primaires.
Theo.H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h54   #10
Membre chevronné
 
Avatar de wimbish
 
Homme Christophe Vibert
Développeur informatique
Inscription : octobre 2006
Messages : 291
Détails du profil
Informations personnelles :
Nom : Homme Christophe Vibert
Âge : 38
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2006
Messages : 291
Points : 630
Points : 630
Bonjour,
Tu parcours un fichier txt, les valeurs de tes clés doivent êtres dedans (non !?)
Avant ton hajoute(), tu affecte des valeurs aux rubrique du fichier donc à tes clés (non !?)
wimbish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h58   #11
Membre Expert
 
Homme Nicolas Jeanneau
Développeur informatique
Inscription : octobre 2010
Messages : 638
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Jeanneau
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2010
Messages : 638
Points : 1 020
Points : 1 020
si elles sont dans ton fichier txt alors il te faut créer ta clef composée pour la rechercher à partir de tes données txt.

un truc du genre :

hlitrecherche(Totaltmp,PRIMARY,hconstruitvalclé(Totaltmp,PRIMARY,"Donnee1","Donnee2"))

Et là tu fais une recherche dans ton fichier avec des données provenant de ta source sur le champ unique.
Nicolas_Jeanneau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 14h20   #12
Invité régulier
 
Homme
Apprenti BTS Developpeur d'Applications
Inscription : janvier 2012
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Apprenti BTS Developpeur d'Applications

Informations forums :
Inscription : janvier 2012
Messages : 36
Points : 9
Points : 9
Re-bonjour,

Alors j'ai continuer mes test et me suit rendu maintenant compte qu'enfet mon traitement passe la première ligne, ma deuxième ligne, ma troisième ligne mes valeurs s'affichent correctement mais mon flitligne doit ce bloquer a la première ligne et donc cela me créer mon doublon.

Donc l'erreur est que même si mes valeur s'affiche bien (dans mes ligne de commande) pour la troisime ligne, j'ajoute la première ligne après mon hrecherche premiere.

Cela est-il du a une erreur de syntaxes?

(j'ai essayer Nicolas votre méthode mais sans succès, et sinon wimbish mes valeurs sont bien lu d'un fichier txt mais s'ajoute dans une table et non dans mon fichier.)

Votre méthode Nicolas m'enlève cet erreur de doublon donc je pense qu'on est sur la bonen voie mais il n'y a plus qu'une seul ligne dans ma table (la première ligne de donnée)

Merci de prendre du temps,
Cordialement,
Theo.H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 15h37   #13
Invité régulier
 
Homme
Apprenti BTS Developpeur d'Applications
Inscription : janvier 2012
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Apprenti BTS Developpeur d'Applications

Informations forums :
Inscription : janvier 2012
Messages : 36
Points : 9
Points : 9
J'ai trouver, voici la solution (aussi simple soit-elle) :
Code :
1
2
3
4
5
6
7
8
	
HSurErreur(Totaltmp,hErrDoublon,"")
HAjoute(Totaltmp,hIgnoreDoublon)
	SI HErreurDoublon()=Vrai ALORS
	SINON				
	FIN
	sMaChaîne = fLitLigne(nDB_XX_CDE)
	FIN
Theo.H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 16h42   #14
Membre Expert
 
Homme Nicolas Jeanneau
Développeur informatique
Inscription : octobre 2010
Messages : 638
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Jeanneau
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2010
Messages : 638
Points : 1 020
Points : 1 020
si une seule ligne s'ajoute, c'est que la clef n'est pas respectée. A priori, tu ne fais le test qu'avec un jeu de données (celui de la première ligne) et donc je suppose que tu ne mets pas à jour les champs dans la boucle ...

Sans le code complet, c'est vraiment très dur de pouvoir dire où se situent les erreurs !
Nicolas_Jeanneau est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h12.


 
 
 
 
Partenaires

Hébergement Web