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

Résolu
thefada Messages postés 65 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 25 janvier 2008 - 23 mai 2006 à 11:56
nerix27 Messages postés 86 Date d'inscription jeudi 23 octobre 2003 Statut Membre 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
A voir également:

4 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
23 mai 2006 à 23:16
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
3
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
23 mai 2006 à 18:04
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
0
thefada Messages postés 65 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 25 janvier 2008
24 mai 2006 à 09:37
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
0
nerix27 Messages postés 86 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 21 juin 2007 2
21 juin 2007 à 15:59
Effectivement, ça marche beaucoup mieux à l'envers.
Allez comprendre pourquoi !!!

Merci nhervagault...
0
Rejoignez-nous