Somme de donnée d'un DataView

Cricri1670 Messages postés 32 Date d'inscription samedi 15 décembre 2007 Statut Membre Dernière intervention 10 avril 2014 - 14 mai 2012 à 16:30
Cricri1670 Messages postés 32 Date d'inscription samedi 15 décembre 2007 Statut Membre Dernière intervention 10 avril 2014 - 21 mai 2012 à 12:11
Bonjour,

Je travaille sur un projet qui expose des données au travers d'un DataGridView alimenté par un DataView pour le filtrage. Les données proviennent d'un DataSet fortement typé (base relationelle locale connue).
Chaque row comporte des colonnes texte (informations) et des colonnes numériques qui représentent des heures en format décimal.
Sous les colonnes numériques du DataView, j'ai des TextBox dans lesquelles j'aimerais faire apparaitre la somme des heures qui apparaissent dans le DataGridView (éventuellement filtré par le DataView).

Malgré mes recherches, je ne trouve pas la solution. Pour l'instant, j'utilise un Compute qui utilise le critère de tri du DataView mais c'est assez lourd. Y a t'il une autre solution ?

Merci beaucoup de votre aide.

4 réponses

Utilisateur anonyme
14 mai 2012 à 17:40
Bonjour,

Datacolumn.expression dans l'aide de VB.
0
Cricri1670 Messages postés 32 Date d'inscription samedi 15 décembre 2007 Statut Membre Dernière intervention 10 avril 2014
15 mai 2012 à 13:45
Bonjour,

Merci ! C'est tellement simple que je n'arrive pas à comprendre comment je n'ai pas pu tomber dessus... Je vais essayer le plus vite possible.
C'était ma première question sur le forum. Mille fois merci !
0
Cricri1670 Messages postés 32 Date d'inscription samedi 15 décembre 2007 Statut Membre Dernière intervention 10 avril 2014
16 mai 2012 à 10:32
Je me suis enthousiamé un peu vite et j'ai peur de ne pas avoir été suffisamment clair...
Si j'ai bien compris, le DataColumn.Expression que tu suggères permet de créer une colonne dont le contenu dépend des autres colonnes. Pour une somme, ça permet de faire la somme, sur une ligne, des données d'autres colonnes. C'est donc un calcul "horizontal". Moi, j'ai besoin de calculer la somme des valeurs d'une colonne (calcul "vertical") pour l'afficher dans des TextBox situées sous mon DataGridView (valeurs décimales ou DbNull).
Pour l'instant, je n'ai trouvé que trois solutions :
- Une table Totaux dans mon DataSet (+ Binding) dont la requête SQL Select doit être manipulée à chaque fois que je change les critères de mon DataView. J'utilise le Binding, c'est rapide mais lourd à gérer !
- une boucle sur les DataGridView.Rows qui utilise une variable par calcul (10 totaux = 10 variables). Plutôt lent et pas très classe !
- un DataTable.Compute qui réutiliserait le critère de filtre de mon DataView. Une ligne de code par colonne calculée, pas de Binding TextBox, mais c'est sans doute la meilleure même si je ne l'ai pas encore chronométrée.

Quelqu'un peut-il orienter mon choix ou a t'il une autre solution pour automatiser tout celà en utilisant les données du DataView et en créant éventuellement un Binding sur les TextBox ?

Merci à tous.
0
Cricri1670 Messages postés 32 Date d'inscription samedi 15 décembre 2007 Statut Membre Dernière intervention 10 avril 2014
21 mai 2012 à 12:11
Après tests, la solution la plus rapide et la plus pratique s'avère être le DataTable.Compute qui est un peu plus lourde à utiliser mais offre l'avantage de réutiliser la chaine RowFilter du DataView.

Problème résolu.

En espérant que ça serve à d'autres.
0
Rejoignez-nous