J'alimente un Datagridview avec une requête linq to sql.
Je souhaiterais afficher au choix : tous les articles de la table, ou seulement ceux en stock.
Pour ce faire il faudrait que je puisse invalider la ligne
Where grouping.Sum(Function(p) p.AS_QteSto) > 0
quand la checkbox 'EnStock' est déselectionnée.
J'ai essayé en faisant un test if..then...else..endif, en dupliquant le code et en supprimant cette seule ligne, mais j'obtiens le message :
La variable 'ArticlesEnStock' masque une variable dans un bloc englobant.
Voici le code de la requête :
1 2 3 4 5 6 7 8 9 10 11
| Dim ArticlesEnStock = From Article In DC.F_ARTICLE _
Join Stock In DC.F_ARTSTOCK On Stock.AR_Ref Equals Article.AR_Ref _
Where Article.AR_Design.Contains(TextBox1.Text) _
And Article.FA_CodeFamille.Contains(FamilleSélectionnée) _
Order By Article.AR_Design _
Group Stock By Article.AR_Design, Article.AR_Ref, _
Article.AR_PrixVen, Article.FA_CodeFamille Into grouping = Group _
Where grouping.Sum(Function(p) p.AS_QteSto) > 0 _
Select New With {.Article = AR_Ref, .Désignation = AR_Design, _
.Prix = AR_PrixVen, .Famille = FA_CodeFamille, _
.Stock = grouping.Sum(Function(p) p.AS_QteSto)} |
J'ai contourné le problème en créant deux requêtes linq to sql :
1 2 3 4 5 6 7
| If EnStock.Checked = True Then
DataGridView1.DataSource = ArticlesEnStock
Total = ArticlesEnStock.Count
Else
DataGridView1.DataSource = ArticlesTous
Total = ArticlesTous.Count
End If |
Mais je ne trouve pas cela très propre
Partager