PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Trouver des doublons dans une table mémoire
Trouver des doublons dans une table mémoire
Débuté par o_saidou, 19 nov. 2007 13:57 - 7 réponses
Posté le 19 novembre 2007 - 13:57
Bonjour

J'ai une table mémoire (liste des paiements) dont une colonne comporte des données (codes contrats) qui se répètent.

Question : Quelle procédure peut on utiliser pour pouvoir avoir une liste distincte des codes contrats qui se répètent plus d'une fois dans ma colonne ?

Ceci dans le but par exemple d'effectuer des cumuls des paiements par contrat.

Je sais qu'avec le code SQL on arrive facilement à ce résultat, mais pour cela il faut interroger un fichier.

Dans mon cas, je ne pars pas d'un fichier existant.

Comment faire alors ?

Merci de vos contributions.
Posté le 19 novembre 2007 - 14:41
Bonjour,
1. Tu tries la table sur la colonne en question
2. Tu balaies la table, de la ligne 1 à l'avant-dernière ligne
3. Pour chaque ligne, si le code = celui de la ligne suivante => doublon. Dans ce cas, si le code en question n'est pas encore dans la liste (champ liste, varaible de type chaine...), tu l'ajoutes.

Pour plus d'informations, regarde l'aide de TableTrie, ChaineOccurrence (ou listecherche)...

Frédéric.
Posté le 19 novembre 2007 - 15:08
Said a exposé le 19/11/2007 :
Bonjour

J'ai une table mémoire (liste des paiements) dont une colonne comporte des
données (codes contrats) qui se répètent.

Question : Quelle procédure peut on utiliser pour pouvoir avoir une liste
distincte des codes contrats qui se répètent plus d'une fois dans ma colonne
?

Ceci dans le but par exemple d'effectuer des cumuls des paiements par
contrat.

Je sais qu'avec le code SQL on arrive facilement à ce résultat, mais pour
cela il faut interroger un fichier.

Dans mon cas, je ne pars pas d'un fichier existant.

Comment faire alors ?

Merci de vos contributions.


tablecherche(...)
si je trouve alors
tablemodifie(...)
sinon
tableajouteligne(...)
fin

--
Cordialement JeAn-PhI
Posté le 19 novembre 2007 - 22:38
Bonjour

Effectivement, en cherchant entre temps, voici la procédure que j'ai "montée" et qui pourrait intéresser certains :

PROCEDURE CalculerCumParCpte()
i,j,nBlignes sont des entiers
tabT2 est un tableau de 0 par 6 chaînes
sListeTemp est une chaîne
moDéb,moCréd sont des monétaires
moDéb=0; moCréd=0
i=1;j=1

TableauAjouteLigne(tabT2,TABLE_1.COL_NumCpteDéb[1],TABLE_1.COL_LibCpteDéb[1],TABLE_1.COL_MDébit[1],TABLE_1.COL_NumCpteCréd[1],+...
TABLE_1.COL_LibCpteCréd[1],TABLE_1.COL_MDébit[1])
sListeTemp=TABLE_1.COL_NumCpteDéb[1]

nBlignes=TableOccurrence(TABLE_1)

POUR i=2 A nBlignes

SI ChaîneOccurrence(sListeTemp,TABLE_1.COL_NumCpteDéb[i])>0 ALORS
moDéb=TABLE_1.COL_MDébit[i]+Val(tabT2[j,3])
moCréd=TABLE_1.COL_MCrédit[i]+Val(tabT2[j,6])
tabT2[j,3]=moDéb
tabT2[j,6]=moCréd
j++
SINON
TableauAjouteLigne(tabT2,TABLE_1.COL_NumCpteDéb[i],TABLE_1.COL_LibCpteDéb[i],TABLE_1.COL_MDébit[i],TABLE_1.COL_NumCpteCréd[i],+...
TABLE_1.COL_LibCpteCréd[i],TABLE_1.COL_MDébit[i])
j++
FIN

sListeTemp+=","+TABLE_1.COL_NumCpteDéb[i]

FIN

nBlignes=TableauOccurrence(tabT2)

POUR i=1 A nBlignes
Trace(tabT2[i,1]+TAB+tabT2[i,2]+TAB+tabT2[i,3]+TAB+tabT2[i,6])
FIN

Merci et à bientôt.
Posté le 20 novembre 2007 - 07:41
Bonjour, je vous propose une itération sur table triée :

Lig est un entier=1
Nlig est un entier = table1..occurrence
MemeContrat est un booleen
ContratRef est une chaine
CumulContrat est un reel

Tabletrie("Table1","contrat") //trier d'abord la table memoire dans l'ordre des contrats

Tantque Lig<=Nlig
ContratRef=contrat[lig]
MemeContrat=vrai
CumulContrat=0

Tantque Lig<=Nlig et MemeContrat
CumulContrat+=colCA[Lig]
Lig++
si Lig<=Nlig alors
MemeContrat=(Contrat[Lig]=ContratRef)
fin
FIN

Trace ("Contrat N."+contratRef+" CA : "+CumulCA)

FIN

Bon dev.
Posté le 07 avril 2017 - 19:31
Salut à vous!

S'il vous plaît, j'ai une table qui contient des lignes identiques, comment peux-je les supprimées et garder une seule?

Merci de m'aidez
Posté le 10 avril 2017 - 08:51
Bonjour,
Avec un tri, une boucle, une comparaison et une suppression ?

Frédéric.

"MOHAMED RACHADE" a écrit dans le message de groupe de discussion :
20177a2ac6fd1060b23c70b926c7d55ac98c@news.pcsoft.fr...

Salut à vous!

S'il vous plaît, j'ai une table qui contient des lignes identiques, comment
peux-je les supprimées et garder une seule?

Merci de m'aidez
Membre enregistré
197 messages
Posté le 10 avril 2017 - 10:04
Bonjour,
Il est impératif de trouver l'origine des doublons dans la table (à moins que ton programme ne serve qu'à la suppression des doublons)
Cordialement