Re: l'importation...et les doublons

Posté par Dream_Team le 1/7/2007 19:14:13
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

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=5246&post_id=21673