PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD8] Suppression d'enreg sur clé unique
[WD8] Suppression d'enreg sur clé unique
Débuté par freddie3, 03 aoû. 2004 01:03 - 4 réponses
Posté le 03 août 2004 - 01:03
Bonjour,
J'ai un fichier de 100 000 enreg, avec comme clé (multiple) un champ qui
contient un numéro de téléphone.
Comment puis-je supprimer (assez rapidement) tous les enreg dont le numéro
de téléphone est unique ?
Merci de vos réponses pour ce Pb qui me semblait simple à l'analyse, mais me
bloque lors de la réalisation.
Tyves.
Posté le 03 août 2004 - 10:42
A mon avis le plus simple est de fonctionner avec une table mémoire comportant
2 Colonnes:
* Ton Numéro de Téléphone
* Le Nombre d'enregistrements avec ce numéro de téléphone

//Tu parcours ton fichier
Pour i = 1 A HNbEnr(MaTable)
//On regarde si le Numéro de Tel est présent dans la table
IndiceRecherche = TableCherche(MaTableMémoire.MonNumTel,MaTable.NumTel)
SI IndiceRecherche = -1 ALORS
//Il n'esiste pas donc on le cré
TableAjouteLigne(MaTableMémoire,MaTable.NumTel,1)
SINON
// on Modifie l'enregistrement
(Je ne sais plus la syntaxe de tête, tu incrément ton nombre de 1)
FIN
TableAffiche(MaTableMéMoire,TaDébut)
FIN

//Maintenant on supprime tous les enregistrements qui ont 1 en Nombre
Pour i = 1 A TableOccurence(MaTableMéMoire)
TableSelectPlus(MaTableMémoire,i)
SI MaTableMémoire.NbEnr = 1 ALORS
HLitRecherchePremier(MaTable,NumTel,MaTableMémoire.MonNumTel)
TANTQUE HTrouve(MaTable)
SI PAS HSupprime(MaTable) ALORS
Erreur("Suppression non effectuée, ERREUR !!!")
FIN
HLitRecherchePremier(MaTable,NumTel,MaTableMémoire.MonNumTel)
FIN
FIN
FIN

A quelque chose prés je pense que ce code fonctionne, à tester avant bien
sûr !!!

Tiens moi au courant !!!
"freddie3" <freddie3@wanadoo.fr> wrote:

Bonjour,
J'ai un fichier de 100 000 enreg, avec comme clé (multiple) un champ qui
contient un numéro de téléphone.
Comment puis-je supprimer (assez rapidement) tous les enreg dont le numéro
de téléphone est unique ?
Merci de vos réponses pour ce Pb qui me semblait simple à l'analyse, mais

me
bloque lors de la réalisation.
Tyves.

Posté le 03 août 2004 - 10:54
Bonjour,

soit + précis
qu'entends tu par N° unique?

"freddie3" <freddie3@wanadoo.fr> wrote:

Bonjour,
J'ai un fichier de 100 000 enreg, avec comme clé (multiple) un champ qui
contient un numéro de téléphone.
Comment puis-je supprimer (assez rapidement) tous les enreg dont le numéro
de téléphone est unique ?
Merci de vos réponses pour ce Pb qui me semblait simple à l'analyse, mais

me
bloque lors de la réalisation.
Tyves.

Posté le 03 août 2004 - 21:38
Salut JeanDaniel,

soit + précis
qu'entends tu par N° unique?

N° unique, c'est à dire qui ne se trouve qu'une seule fois dans le fichier.

Mais je pense avoir eu la réponse en faisant une requête qui compte et
sélectionne les compteurs égal à 1; je peut ensuite les supprimer.
Même méthode indiquée dans un autre post, en faisant ce repèrage avec une
table mémoire.

Merci quand même
Tyves


"jean-daniel" <nospam.jean-daniel.hoarau@laposte.net> a écrit dans le
message de news:410f36b9$1@news.pcsoft.fr...


Bonjour,

soit + précis
qu'entends tu par N° unique?

"freddie3" <freddie3@wanadoo.fr> wrote:

Bonjour,
J'ai un fichier de 100 000 enreg, avec comme clé (multiple) un champ qui
contient un numéro de téléphone.
Comment puis-je supprimer (assez rapidement) tous les enreg dont le

numéro
de téléphone est unique ?
Merci de vos réponses pour ce Pb qui me semblait simple à l'analyse, mais
me

bloque lors de la réalisation.
Tyves.


Posté le 03 août 2004 - 21:47
Salut Aurélien,

Ta solution de table mémoire à 2 colonnes pour mémoriser le nbre
d'occurences de chaque NumTel et ensuite supprimer tous ceux qui sont à 1
est très sympathique, et est à rapprocher de la solution de requête Count
pour arriver au même résultat (solution donnée par un autre Post).
Je teste les 2 pour savoir quelle est la plus rapide, mais mon horizon s'est
bien éclairci !

Merci encore
Tyves


"Aurélien MACHABERT" <43@gauthiersa.fr> a écrit dans le message de
news:410f33dc$1@news.pcsoft.fr...


A mon avis le plus simple est de fonctionner avec une table mémoire

comportant
2 Colonnes:
* Ton Numéro de Téléphone
* Le Nombre d'enregistrements avec ce numéro de téléphone

//Tu parcours ton fichier
Pour i = 1 A HNbEnr(MaTable)
//On regarde si le Numéro de Tel est présent dans la table
IndiceRecherche = TableCherche(MaTableMémoire.MonNumTel,MaTable.NumTel)
SI IndiceRecherche = -1 ALORS
//Il n'esiste pas donc on le cré
TableAjouteLigne(MaTableMémoire,MaTable.NumTel,1)
SINON
// on Modifie l'enregistrement
(Je ne sais plus la syntaxe de tête, tu incrément ton nombre de 1)
FIN
TableAffiche(MaTableMéMoire,TaDébut)
FIN

//Maintenant on supprime tous les enregistrements qui ont 1 en Nombre
Pour i = 1 A TableOccurence(MaTableMéMoire)
TableSelectPlus(MaTableMémoire,i)
SI MaTableMémoire.NbEnr = 1 ALORS
HLitRecherchePremier(MaTable,NumTel,MaTableMémoire.MonNumTel)
TANTQUE HTrouve(MaTable)
SI PAS HSupprime(MaTable) ALORS
Erreur("Suppression non effectuée, ERREUR !!!")
FIN
HLitRecherchePremier(MaTable,NumTel,MaTableMémoire.MonNumTel)
FIN
FIN
FIN

A quelque chose prés je pense que ce code fonctionne, à tester avant bien
sûr !!!

Tiens moi au courant !!!
"freddie3" <freddie3@wanadoo.fr> wrote:

Bonjour,
J'ai un fichier de 100 000 enreg, avec comme clé (multiple) un champ qui
contient un numéro de téléphone.
Comment puis-je supprimer (assez rapidement) tous les enreg dont le

numéro
de téléphone est unique ?
Merci de vos réponses pour ce Pb qui me semblait simple à l'analyse, mais
me

bloque lors de la réalisation.
Tyves.