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

thefada 65 Messages postés vendredi 8 juillet 2005Date d'inscription 25 janvier 2008 Dernière intervention - 23 mai 2006 à 11:56 - Dernière réponse : nerix27 86 Messages postés jeudi 23 octobre 2003Date d'inscription 21 juin 2007 Dernière intervention
- 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 

4 réponses

Répondre au sujet
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 23 mai 2006 à 23:16
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de nhervagault
cs_vpoyo 363 Messages postés vendredi 14 février 2003Date d'inscription 20 avril 2010 Dernière intervention - 23 mai 2006 à 18:04
0
Utile
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
thefada 65 Messages postés vendredi 8 juillet 2005Date d'inscription 25 janvier 2008 Dernière intervention - 24 mai 2006 à 09:37
0
Utile
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
nerix27 86 Messages postés jeudi 23 octobre 2003Date d'inscription 21 juin 2007 Dernière intervention - 21 juin 2007 à 15:59
0
Utile
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.