Bonjour,
J'ai un datagridview qui contient des données où une colonne du montant et je veux afficher la somme du montant dans un textbox à chaque ajout d'une nouvelle ligne à la base SqlServer
Une idée comment réaliser cela ?
Merci.
Version imprimable
Bonjour,
J'ai un datagridview qui contient des données où une colonne du montant et je veux afficher la somme du montant dans un textbox à chaque ajout d'une nouvelle ligne à la base SqlServer
Une idée comment réaliser cela ?
Merci.
Bonjour,
une requête genre :
après l'insertion en base de donnée?Code:select sum(maColonne) from maTable
bonsoir,
oui la somme après l'insertion à la base de données
est ce que c'est la bonne requete et comment je peux le maitre !!!
salut
Tu peux mettre le code d'insertion dans le texbox juste après le code d'affichage dans le GridView.
Tu peux aussi mettre le code d'insertion dans le texbox dans une fonction que tu pourra appeller juste après le code d'affichage dans le GridView.
Voici un bout de code qui pourra t'aider
Code:
1
2
3
4
5 Dim command As New OleDb.OleDbCommand("select sum(MntCalcule) as MaSomme from MaTable", ConnectStr) Dim LeReader As OleDb.OleDbDataReader = command.ExecuteReader If LeReader.Read Then TextBox3.Text = LeReader!MaSomme End If
C'est presque ca ;)
Quand le requête ne retourne qu'un résultat, qu'on appel fonction d'agrégation :
On utilise la fonction ExecuteScalar :Citation:
Une fonction d'agrégation est un résultat unique à partir de multiples entrées-lignes. Par exemple les agrégats pour calculer les count, sum, avg (moyenne), max (maximum) et min (minimum) sur un ensemble de lignes.
Et en plus c'est plus simple et propre :)Code:
1
2 Dim command As New OleDb.OleDbCommand("select sum(MntCalcule) as MaSomme from MaTable", ConnectStr) TextBox3.Text = command.ExecuteScalar
salut
j'ai mis le code après le remplissage du datagridview mais il n'a pas affiché le resultat :
qui peut m'aiderCode:
1
2
3
4
5
6
7
8
9 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try da.Fill(ds, "reglement") DataGridView1.DataSource = ds.Tables("reglement") Dim command As New SqlCommand("SELECT SUM(montant) AS Somme FROM reglement", cs) TextBox1.Text = command.ExecuteScalar Catch ex As Exception End Try End Sub
On ne met JAMAIS un code dans un try / catch qui ne gère pas les exceptions !!! :arf::furieux:
au pire tu fais un :
Peux tu nous dire ce qu'affiche l'erreur avec ce code modifié?Code:
1
2
3
4
5
6
7
8
9
10 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try da.Fill(ds, "reglement") DataGridView1.DataSource = ds.Tables("reglement") Dim command As New SqlCommand("SELECT SUM(montant) AS Somme FROM reglement", cs) TextBox1.Text = command.ExecuteScalar Catch ex As Exception msgbox(ex.toString) End Try End Sub
voici le message d'exception qui s'affiche : fichier attaché
le message s'affiche puis je clique sur ok mais il n'affiche pas la somme du montant
Le message
me parait claire :aie:Citation:
ExecuteScalar nécessite une connexion ouverte et disponible.
La connexion est actuellement fermée.
Il te faut ouvrir la connexion :
Code:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try da.Fill(ds, "reglement") DataGridView1.DataSource = ds.Tables("reglement") Dim command As New SqlCommand("SELECT SUM(montant) AS Somme FROM reglement", cs) cs.open TextBox1.Text = command.ExecuteScalar cs.close Catch ex As Exception msgbox(ex.toString) End Try End Sub