[VB.NET] Supprimer des lignes d'un datatable [Résolu]

Messages postés
65
Date d'inscription
vendredi 8 juillet 2005
Dernière intervention
25 janvier 2008
- 23 mai 2006 à 11:56 - Dernière réponse :
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Dernière intervention
21 juin 2007
- 21 juin 2007 à 15:59
Salut à tous,

J'ai un datatable possédant une colonnes "Quantité" et déjà plusieurs enregistrements. (vb.net)
J'aimerais supprimer tous les enregistrements où la quantité vaut zéro.

Mon idée était:

Dim rowTemp As DataRow = tbl.NewRow

For each rowTemp in tbl.Rows
    If rowTemp("Quantite")=0 Then
       tbl.Rows.Remove(rowTemp)
    End If
Next

Mais ce code plante:
                Collection was modified; enumeration operation may not execute.

Pouvez-vous m'aider?

Merci

thefada
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
23 mai 2006 à 23:16
3
Merci
Salut

Il suffit de parcourir la boucle à l'envers, et ca fonctionne.

For i = tbl.Rows.count -1 to 0 step -1
rowTemp = tbl.Rows(i)
If rowTemp("Quantite")=0 Then
tbl.Rows.Remove(rowTemp)
End If
Next

Voila

Merci nhervagault 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de nhervagault
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Dernière intervention
20 avril 2010
23 mai 2006 à 18:04
0
Merci
a mon avis ca vient du fait du for each ta "row" est en cours d'utilisation donc niet verbotten pas touche (tu auras le même problem avec des listes ou hashtable) par contre tu dois pouvoir faire une copie de ton datatable ;-)
tu recherches dans la copie la ligne à supprimer et tu la supprimes de l'original
Commenter la réponse de cs_vpoyo
Messages postés
65
Date d'inscription
vendredi 8 juillet 2005
Dernière intervention
25 janvier 2008
24 mai 2006 à 09:37
0
Merci
Je suis sublugué par tant d'astuce, bravo nhervagault, je suppose que tu as déjà eu à faire au meme problème n'est-ce pas?

merci
Commenter la réponse de thefada
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Dernière intervention
21 juin 2007
21 juin 2007 à 15:59
0
Merci
Effectivement, ça marche beaucoup mieux à l'envers.
Allez comprendre pourquoi !!!

Merci nhervagault...
Commenter la réponse de nerix27

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.