Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment supprimer plusierus lignes d une table

12 réponses
Avatar
Cazaux-Moutou Philippe
Bonjour

j ai uen grille qui m affiche le contenu d'une table
j ai uen case a cocher dans cette grille et je veux effacer toutes les
lignes qui sont cochées

je fait donc ca

bt est un entier

POUR bt = 1 A TableOccurrence(TABLE_Morceaux)


SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS

// fSupprime(TABLE_Morceaux.MO_Chemin[bt])

TableSupprime(TABLE_Morceaux,bt)

FIN


FIN

mais rien a faire il ne fait que la 1ere

comment faire ?

merci

10 réponses

1 2
Avatar
Réal Phil
Vous avez essayé avec ce qui suit ?
POUR bt = 1 A TABLE_Morceaux..Occurence
(juste au cas où ça change quelque chose)

===============

On 12 jan, 14:20, "Cazaux-Moutou Philippe"
wrote:
Bonjour

j ai uen grille qui m affiche le contenu d'une table
j ai uen case a cocher dans cette grille et je veux effacer toutes les
lignes qui sont cochées

je fait donc ca

bt est un entier

POUR bt = 1 A TableOccurrence(TABLE_Morceaux)

SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS

// fSupprime(TABLE_Morceaux.MO_Chemin[bt])

TableSupprime(TABLE_Morceaux,bt)

FIN

FIN

mais rien a faire il ne fait que la 1ere

comment faire ?

merci


Avatar
PAtrick
et si tu commencais plutot par la derniere ligne

pour i = tableoccurrence(TABLE_Morceaux) a 1 par -1
sI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS
TableSupprime(TABLE_Morceaux,bt)
FIN

car avec ton code, l'occurence de ta table change a chaque suppression !

Cazaux-Moutou Philippe wrote:

bt est un entier

POUR bt = 1 A TableOccurrence(TABLE_Morceaux)


SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS

// fSupprime(TABLE_Morceaux.MO_Chemin[bt])

TableSupprime(TABLE_Morceaux,bt)

FIN


FIN

mais rien a faire il ne fait que la 1ere

comment faire ?

merci



--
Ste ADMICILE http://www.admicile.com
La radio sur internet http://www.x-stream80.com
Avatar
VincentC
tableoccurence change à chaque itération.
mais surtout. i est incrémenté à chaque fois donc les lignes se
décalant à chaque suppression, il va y avoir un pb.
un tableau de 3 lignes L1,L2,L3 donnerait
1er passage :i=1 => reste L2,L3
2eme passage : i=2 => reste L2 (et oui c'est l3 qui a l'indice 2)
3eme passage : i=3 => débordement !


PAtrick avait prétendu :
et si tu commencais plutot par la derniere ligne

pour i = tableoccurrence(TABLE_Morceaux) a 1 par -1
sI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS
TableSupprime(TABLE_Morceaux,bt)
FIN

car avec ton code, l'occurence de ta table change a chaque suppression !

Cazaux-Moutou Philippe wrote:

bt est un entier

POUR bt = 1 A TableOccurrence(TABLE_Morceaux)


SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS

// fSupprime(TABLE_Morceaux.MO_Chemin[bt])

TableSupprime(TABLE_Morceaux,bt)

FIN


FIN

mais rien a faire il ne fait que la 1ere

comment faire ?

merci




Avatar
Cazaux-Moutou Philippe
oui, mais alors comment faire ?

"VincentC" a écrit dans le message de news:

tableoccurence change à chaque itération.
mais surtout. i est incrémenté à chaque fois donc les lignes se décalant à
chaque suppression, il va y avoir un pb.
un tableau de 3 lignes L1,L2,L3 donnerait
1er passage :i=1 => reste L2,L3
2eme passage : i=2 => reste L2 (et oui c'est l3 qui a l'indice 2)
3eme passage : i=3 => débordement !


PAtrick avait prétendu :
et si tu commencais plutot par la derniere ligne
pour i = tableoccurrence(TABLE_Morceaux) a 1 par -1 sI
TABLE_Morceaux.COL_Del[bt] = Vrai ALORS
TableSupprime(TABLE_Morceaux,bt)
FIN

car avec ton code, l'occurence de ta table change a chaque suppression !

Cazaux-Moutou Philippe wrote:

bt est un entier

POUR bt = 1 A TableOccurrence(TABLE_Morceaux)


SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS

// fSupprime(TABLE_Morceaux.MO_Chemin[bt])

TableSupprime(TABLE_Morceaux,bt)

FIN


FIN

mais rien a faire il ne fait que la 1ere

comment faire ?

merci








Avatar
VincentC
Comme le suggérer patrick, commencer par fin du tableau avec un step de
-1. pour le reste, j'ai pas testé. si personne n'a répondu lundi, je
ferais un petit test.

Cdt.

Cazaux-Moutou Philippe a présenté l'énoncé suivant :
oui, mais alors comment faire ?

"VincentC" a écrit dans le message de news:

tableoccurence change à chaque itération.
mais surtout. i est incrémenté à chaque fois donc les lignes se décalant à
chaque suppression, il va y avoir un pb.
un tableau de 3 lignes L1,L2,L3 donnerait
1er passage :i=1 => reste L2,L3
2eme passage : i=2 => reste L2 (et oui c'est l3 qui a l'indice 2)
3eme passage : i=3 => débordement !


PAtrick avait prétendu :
et si tu commencais plutot par la derniere ligne
pour i = tableoccurrence(TABLE_Morceaux) a 1 par -1 sI
TABLE_Morceaux.COL_Del[bt] = Vrai ALORS
TableSupprime(TABLE_Morceaux,bt)
FIN

car avec ton code, l'occurence de ta table change a chaque suppression !

Cazaux-Moutou Philippe wrote:

bt est un entier

POUR bt = 1 A TableOccurrence(TABLE_Morceaux)


SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS

// fSupprime(TABLE_Morceaux.MO_Chemin[bt])

TableSupprime(TABLE_Morceaux,bt)

FIN


FIN

mais rien a faire il ne fait que la 1ere

comment faire ?

merci










Avatar
Georges Peyre
Après mure réflexion, Cazaux-Moutou Philippe a écrit :

bt est un entier
POUR bt = 1 A TableOccurrence(TABLE_Morceaux)
SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS
// fSupprime(TABLE_Morceaux.MO_Chemin[bt])
TableSupprime(TABLE_Morceaux,bt)
FIN
FIN
mais rien a faire il ne fait que la 1ere



// Ceci marche correctement depuis plusieurs versions
Ind=1
TANTQUE PAS Ind>TableOccurrence(TABLE1)
SI TABLE1.CHOIX[Ind]=Vrai ALORS
TableSupprime(TABLE1,Ind)
Ind --
FIN
Ind ++
FIN

Cordialement

--
Elle est pas belle la vie ?
Avatar
PAtrick
Bonjour

faire commme je te l'ai dis :) demarre par la fin,
ca marche depuis TRES TRES longtemps garantie.

i est un entier
pour i = Tableoccurrence(Table) a 1 par -1
si table.Col[i] alors tablesupprime(table,i)
fin


Cazaux-Moutou Philippe wrote:
oui, mais alors comment faire ?





--
Ste ADMICILE http://www.admicile.com
La radio sur internet http://www.x-stream80.com
Avatar
Réal Phil
> faire commme je te l'ai dis :) demarre par la fin,
ca marche depuis TRES TRES longtemps garantie.

i est un entier
pour i = Tableoccurrence(Table) a 1 par -1
si table.Col[i] alors tablesupprime(table,i)
fin
======================== ====



C'est certain que cette méthode est la meilleure et la plus simple en
Windev.

À quand la commande d'une seule ligne pour supprimer un ou plusieurs
enregistrements d'un fichier ?
WD pourrait certainement l'appliquer aussi sur les tables.

Par exemple, en Foxpro on a
Delete all for <conditions>
En WD français, cela pourrait être: Supprime Tout Pour <ma ou mes
conditions>

En passant, plus il y a de développeurs qui en feront la demande plus
il y a de chances que PC-Soft ajoute cette simple et puissante fonction.
Avatar
STASZEWSKI André
Bonsoir,

Heuuuuu, avez-vous suivi le fil : [WD10] Avez-vous essayé ?
Merci si vous avez la solution pour mon cas....
La différence est que je n'utilise pas de case à cocher mais la
multisélection.

--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph


"Georges Peyre" a écrit dans le message de news:

Après mure réflexion, Cazaux-Moutou Philippe a écrit :

> bt est un entier
> POUR bt = 1 A TableOccurrence(TABLE_Morceaux)
> SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS
> // fSupprime(TABLE_Morceaux.MO_Chemin[bt])
> TableSupprime(TABLE_Morceaux,bt)
> FIN
> FIN
> mais rien a faire il ne fait que la 1ere

// Ceci marche correctement depuis plusieurs versions
Ind=1
TANTQUE PAS Ind>TableOccurrence(TABLE1)
SI TABLE1.CHOIX[Ind]=Vrai ALORS
TableSupprime(TABLE1,Ind)
Ind --
FIN
Ind ++
FIN

Cordialement

--
Elle est pas belle la vie ?




Avatar
JeAn-PhI
Cazaux-Moutou Philippe vient de nous annoncer :
Bonjour

j ai uen grille qui m affiche le contenu d'une table
j ai uen case a cocher dans cette grille et je veux effacer toutes les lignes
qui sont cochées

je fait donc ca

bt est un entier

POUR bt = 1 A TableOccurrence(TABLE_Morceaux)


SI TABLE_Morceaux.COL_Del[bt] = Vrai ALORS

// fSupprime(TABLE_Morceaux.MO_Chemin[bt])

TableSupprime(TABLE_Morceaux,bt)

FIN


FIN

mais rien a faire il ne fait que la 1ere

comment faire ?

merci



un tableselectoccurence() ne fonctionne pas ?

--
Cordialement JeAn-PhI
1 2