(1) 2 3 »


l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
bonjour, j'ai fait un petit script pour faire une importation :
dbl est un entier = 0
nDoublon est un entier



i est un entier
t est un entier
nXls est un entier

nbCol est un entier
nbLig est un entier

nXls = xlsOuvre("C:\imp.xls")

nbCol = xlsNbColonne(nXls)
nbLig = xlsNbLigne(nXls)

HStatNbDoublon(client,IDclient)

HCréationSiInexistant(client)
HGèreIntégrité("*", "*", hCardinalité + hEnModification + hEnSuppression, Faux)
HGèreDoublon(client,"*",Faux)

	POUR T=2 A nbLig
		POUR i=1 A nbCol
			SELON i
				CAS 2: client.Nom = xlsDonnée(nXls,t,i)
				CAS 3: client.prénom = xlsDonnée(nXls,t,i)
				CAS 4: client.Difficultes = xlsDonnée(nXls,t,i)
				CAS 5: client.Pai = xlsDonnée(nXls,t,i)
				CAS 6: client.Suivi = xlsDonnée(nXls,t,i)
				CAS 7: client.Suites = xlsDonnée(nXls,t,i)
				CAS 8: client.Date = xlsDonnée (nXls,t,i)
			HAjoute(client,hAffecteParcours)					

			FIN
		FIN
	FIN

SI HStatNbDoublon() >= 1 ALORS
 dbl = 1
FIN
SI dbl = 1 ALORS
	nDoublon = HLitRecherche(client,IDclient,dbl)
	HSupprime(client,nDoublon,hVérifieIntégrité)
FIN

xlsFerme(nXls)


SI HErreurIntégrité() = Vrai OU HErreurDoublon() = Vrai ALORS
	Erreur("Une erreur c'est produite, veuillez recommencer")
	SINON
	Info("L'importation s'est déroulée avec succès.")
FIN


donc, tout s'importe bien mais si mes clients existent déjà, lors de l'import, il y a des doublons !
j'ai essayé de les parer avec ce petit code qui hélas, ne sert à rien :
en rouge

merci de m'aider !

Contribution le : 01/07/2007 15:34
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
EDIT : J'ai fait en 2 temps 3 mouvement un petit projet pour illustrer son probleme (le code n'a pas été modifié.) -> Téléchargez le ici : http://dreamteam69.free.fr/WDForge/DoublonsXLS.rar

Bonsoir,
SI HStatNbDoublon() >= 1 ALORS
dbl = 1
FIN
SI dbl = 1 ALORS
nDoublon = HLitRecherche(client,IDclient,dbl)
HSupprime(client,nDoublon,hVérifieIntégrité)
FIN

dbl est toujours = 1 si il y a un doublon, donc le client avec l'ID 1 va etre supprimé ... Il faut donc vérifier si le client exsiste avant de l'enregistrer .
Quel rubrique du fichier est soumise au fait qu'il n'y doit pas avoir de doublon ? Le nom, l'adresse , le prénom ? Je ne pense pas que la fonction de windev pour surveiller les doublons marche pour la ligne entiere, juste rubrique par rubrique. Essayez d'ajouter une Trace de n'importe quoi apres HSupprime pour voir si il passe sur ce code.

PS : Attention a HLitRecherche sans hIdentique ;)

Contribution le : 01/07/2007 17:52

Edité par Dream_Team sur 1/7/2007 18:23:23
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonjour,
tout est à sa place, j'ai repris un code que j'ai adapté, et si le fin était AVANT le hajoute, il n'y aurait que 1 client qui serait importé or, il peut y en avoir aussi bien 1 que 100 ! Et je précise aussi que mon code importe bien les clients, et meme si il y a des doublons ( ce que je ne veux pas ) les clients sont "empilés" à la suite par l'ID (=IDClient )

Il ne doit pas y avoir de doublon a la rubrique "Nom".
Il peut y avoir des doublons sur les différentes options car il peut y avoir par exemple plusieurs clients pour une meme date.

Je ne comprend pas ce qui ne va pas
merci, @+

Contribution le : 01/07/2007 18:01
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
Re-Bonsoir,
J'ai posté plus haut un projet exemple pour illustrer votre probleme.
En le lancant j'ai bien compris l'empilement ;) (comme la page ne s'etait pas bien rafraichie, aucune regle n'a été appliquée sur l'analyse)

Meme si je pense qu'il doit etre possible d'avoir un doublon a la rubrique nom je vais regarder quand meme pour eviter ces doublons (Mon projet exemple a plusieurs colones nom qui sont = a "Dupont" ce qui ne deverais donc pas arriver, non ?)
Peut etre juste une recherche a l'identique avant l'ajout si HTrouve=faux ...

EDIT : Ok pour l'empilement, j'avais oublié que dans Selon, apres que des CAS x:, le reste etait considéré comme "AUTRE CAS"

Contribution le : 01/07/2007 18:26
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonsoir,
voila, au fur et à mesure des imports, les différents clients sont ajouté mais, les MEME clients aussi, ce que je ne veux pas.
Votre projet test est sous windev 11 ? Car, je n'arrive pas à le lire avec mon windev 10 ...

EDIT : dans "recherche à l'identique" vous voulez dire

HFiltreIdentique() ?

Contribution le : 01/07/2007 18:35
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
Re-Bonsoir
Non hIdentique en parametre HLitRecherche.
Désolé pour le projet WD 11, votre autre post etait dans WD 11 donc j'ai completement zappé ^^'

Sinon, le client est-il caractérisé par son nom+prénom ou seulement le nom, voila ce que je ne comprends pas.

Dupont Thierry est le premier enregistrement, Dupont Phillipe ne sera pas ajouté car il y a déja un Dupont, c'est ce que j'ai réussi a faire, sans utiliser le code en rouge.

PS : Je convertis le projet en 10 vous pourrez ainsi voir ;)
EDIT : Malheureusement la syntaxe de hSauvePosition utilisée dans WD11 ne marche pas dans WD10 (hSauveRubriques qui etait l'utilité de la fonction n'exsiste pas, ca prendera donc plus de temps)

Contribution le : 01/07/2007 18:49
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Bonsoir,
voila, je n'en veux qu'un en fonction du NOM uniquement !
si vous n'avez pas utiliser le code rouge, c'est possible avec hIdentique et hlitRecherche ?
EDIT : une petite question si je peux me permettre qui n'a rien a voir avec l'importation :
pourquoi lorsque je veux modifier le titre d'une fenetre via programmation avec ce code :

sNm1 est une chaîne
sNm1 = modifieur..Valeur
Fiche_client..Titre = sNm1


cela ne marche pas, en utilisant le débogueur piur situer mon erreur, il indique la ligne 3 ( Fiche_Client..Titre = sNm1

Contribution le : 01/07/2007 18:55
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
En fait tout se joue au moment de HAjoute, je sauvegarde dans une stucture (pour wd10) pour garder les données actuelles en mémoire (types variants pour rendre la vie plus facile) et je fais un hlitrecherche avec hidentique (il me semble que cela revient a faire un hlitrecherchepremier)

Comme ce n'est qu'en fonction du nom, pas besoin d'utiliser de procédure pour pouvoir vérifier les autres rubriques plus facilement.

Contribution le : 01/07/2007 19:01
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
Un bout de code trainerait il ?
surtout pour la première partie (= sauvegarder dans une structure )

Contribution le : 01/07/2007 19:05
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
EDIT : HS -> Que te renvoie Info(modifieur..Valeur) ?

Voila le projet entier (WD 10) : http://dreamteam69.free.fr/WDForge/DoublonsXLS_WD10.rar (désolé pour les petits problèmes de gabarit, mon WD10 a des petits problemes, le GO mort entre autres ...)
Bien evidemment, ceci n'est pas "la" solution mais une solution ;) Conseil : Adapter les types de la structure (les variants) a ceux correspondants aux types hyperfile. Je pense que le code en rouge ne pouvait supprimer qu'un doublon a la fois, empecher l'ajout etant plus simple que de nettoyer apres coup ;)

Voila la procédure :
//dbl est un entier = 0
//nDoublon est un entier
nPos est un entier = 0
stClient est une structure
	IDClients est un entier
	Nom est un Variant
	Prénom est un Variant
	Difficultes est un Variant
	Pai est un Variant
	Suivi est un Variant
	Suites est un Variant
	Date est un Variant
FIN
tmpClient est un stClient

i est un entier
t est un entier
nXls est un entier

nbCol est un entier
nbLig est un entier

nXls = xlsOuvre("testdoublon.xls")

nbCol = xlsNbColonne(nXls)
nbLig = xlsNbLigne(nXls)

HStatNbDoublon(Client,IDClients)

HCréationSiInexistant(Client)
HGèreIntégrité("*", "*", hCardinalité + hEnModification + hEnSuppression, Faux)
HGèreDoublon(Client,"*",Faux)

POUR T=2 A nbLig
	POUR i=1 A nbCol
		SELON i
			CAS 2: Client.Nom = xlsDonnée(nXls,t,i)
			CAS 3: Client.Prénom = xlsDonnée(nXls,t,i)
			CAS 4: Client.Difficultes = xlsDonnée(nXls,t,i)
			CAS 5: Client.Pai = xlsDonnée(nXls,t,i)
			CAS 6: Client.Suivi = xlsDonnée(nXls,t,i)
			CAS 7: Client.Suites = xlsDonnée(nXls,t,i)
			CAS 8: Client.Date = xlsDonnée (nXls,t,i)
			// On sauvegardes les données en mémoire
			tmpClient:IDClients = Client.IDClients
			tmpClient:Nom = Client.Nom
			tmpClient:Prénom = Client.Prénom
			tmpClient:Difficultes = Client.Difficultes
			tmpClient:Pai = Client.Pai
			tmpClient:Suivi = Client.Suivi
			tmpClient:Suites = Client.Suites
			tmpClient:Date = Client.Date
			// Sauve le contexte en cours
			nPos = HSauvePosition(Client,Nom) // Pour WD11 : Utiliser nPos = HSauvePosition(Client,Nom,hSauveRubriques) a la place de la structure, puis enlever tout ce qui touche a tmpClient
			HLitRecherche(Client,Nom,tmpClient:Nom,hIdentique) // hIdentique : Pour eviter que Dupont et Dupontel soient détectés en doublon.
			SI PAS HTrouve ALORS
				HRestorePosition(nPos)
				// On restaure
				Client.IDClients = tmpClient:IDClients
				Client.Nom = tmpClient:Nom
				Client.Prénom = tmpClient:Prénom
				Client.Difficultes = tmpClient:Difficultes
				Client.Pai = tmpClient:Pai
				Client.Suivi = tmpClient:Suivi
				Client.Suites = tmpClient:Suites
				Client.Date = tmpClient:Date
				HAjoute(Client,hAffecteParcours)
			FIN
		FIN
	FIN
FIN

//SI HStatNbDoublon() >= 1 ALORS
//	dbl = 1
//FIN
//SI dbl = 1 ALORS
//	nDoublon = HLitRecherche(Client,IDclients,dbl)
//	HSupprime(Client,nDoublon,hVérifieIntégrité)
//FIN

xlsFerme(nXls)


SI HErreurIntégrité() = Vrai OU HErreurDoublon() = Vrai ALORS
	Erreur("Une erreur c'est produite, veuillez recommencer")
SINON
	Info("L'importation s'est déroulée avec succès.")
FIN

Contribution le : 01/07/2007 19:14
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
merci beacoup, ça marche nickel !
HS --> le problème ne vient pas du modifieur mais de cette ligne :

Menu.m_donnee1..Libelle = sNm1

il y a une erreur a cause de ce point
En faite, cela indique que le libellé m_donnee1 est dans la fenetre "Menu".
Mais ça ne marche pas, il y a peut etre une autre méthode pour indiquer le chemin du fichier ?

Contribution le : 02/07/2007 00:04
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
Bizarre, ca marche chez moi et j'utilise beaucoup de syntaxes de ce type.

Plus haud le probleme etait ca Fiche_client..Titre = sNm1 mais je ne vois pas le rapport, tant pis ^^
pour un libellé, par contre, j'aurais directement utilisé Menu.mp_donnee1 = sNm1, je n'ai jamais utilisé ..libelle pour un libelle, mais ce n'est surement pas ca qui cause probleme.

Verifie que rien ne soit en conflit avec "menu" en essayant de renommer la fenetre en Fen_Menu (mesure de sécurité) ...

Contribution le : 02/07/2007 00:14
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
bonjour,
désoler, je me suis tromper de ligne, c'est bien celle la :
fiche_client..Titre = sNm1
ça revient a faire
Fiche_client..Titre = modifieur..Valeur

en faite, en appuyant sur ce bouton, j'aimerai changer le titre de la fenetre Fiche_client

j'ai un champ texte a remplir qui s'appelle modifieur
une fenetre a modifier qui s'appelle Fiche_client
et ça ne marche pas !

Contribution le : 02/07/2007 00:19
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
Tu essayes pas de changer le titre avant que la fenetre soit ouverte ? je crois que non car sinon tu aurais une belle erreur wlangage.

Perso, pour les champs de saisie, j'utilise aussi Fiche_Client..Titre = modifieur, pas de ..Valeur ...

Est-ce que la fenetre Fiche_Client est la fenetre en cours ? Si oui, utilise MaFenetre, tu est sur que ca sear la bonne.

Contribution le : 02/07/2007 00:40
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
ce n'est pas la fenetre en cours, mais une autre, pas forcemment ouverte

Contribution le : 02/07/2007 11:54
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
Déja, si ce n'est deja fait, teste si la fenetre est ouverte avec FenEtat(nomfenetre) <> inexsistant.

J'essaye de changer le titre d'une autre fenetre mais il me semble que je fais ca dans mon projet et ca fonctionne ...

Ce que je voulais dire aussi etait que tu ne pouvais pas changer le titre d'une fenetre avant son ouverture ;) Mais je pense que tu le savais deja

EDIT : Chez moi j'ai une fenetre VioletMain et FEN_Options.
dns fenoptions j'ajoute un champ saisie et un bouton
dans le bouton je mets
VioletMain..Titre=Saisie1
et ca roule.

PS : Vérifie que tu n'utilises pas un gabarit qui détoure la fenetre, car dans ce cas ..Titre ne modifie que la barre des taches et le ALT+TAB (on sait jamais, je ne veux pas essayer de vous faire paraitre stupide, mais je sais que je me suis bien pris la tete en oubliant ce detail sur une fenetre détourée qui utilise un libellé comme titre ... ;) )

Contribution le : 02/07/2007 12:40
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
j'utilise le gabarit "Vista"
et, comme j'ai plusieurs titre de fenetre a modifier, si je doit les ouvrir toutes ça fait beaucoup ( entre 2 et 20 )

Contribution le : 02/07/2007 13:40

Edité par Le_GnU sur 2/7/2007 13:57:18
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
Si le gabarit n'est pas en détourage (il me semble que activvista wd10 ne l'est pas) windows gere la barre. Pour modifier le titre, il faut que la fenetre soit ouverte, pas comme pour les Info() et compagnie ... Les changements au titre ne seront pas effectifs. le seul moyen de modifier avant ouverture est de mettre le nom désiré dans une variable globale, et a l'ouverture de la fenetre en question, dans son code de déclarations globales , metre NomFen..titre = variableglobale.

Contribution le : 02/07/2007 15:19
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Utilisateur WDF
Inscrit:
28/05/2007 18:18
Post(s): 90
comme j'en ai plusieurs a modifier, je pense que le plus simple serait de l'ouvrir en invisible et de la refermer après
mais j'ai peur que a la fermeture du programme, les modifications ne soient plus prisent en compte !

Contribution le : 02/07/2007 15:29
Créer un fichier PDF de la contribution Imprimer


Re: l'importation...et les doublons
Stagiaire WDF
Inscrit:
27/09/2004 17:50
Post(s): 44
Non, si on la referme puis qu'on la rouvre a nouveau elle reprendera son nom défini dans l'ihm. Meme sans fermer le programme entier.

Contribution le : 02/07/2007 17:38
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 3 »




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2