Récupérer le résultat d'une requête dans un textBox

Résolu
riko77 Messages postés 4 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 24 février 2010 - 18 févr. 2010 à 19:45
riko77 Messages postés 4 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 24 février 2010 - 24 févr. 2010 à 22:21
Bonjour je développe une petite appli en C#,
je dois faire une somme sur des colonnes "montant" sur 3 tables dans acces et récupérer la somme dans un textBox.

Au préalable je me connecte à la BD, jusque là pas de problème...

int n;
OleDBConnection oConn;
OleDbCommand oCmd;
oConn.ConnectionString="...."; //Chaine de connection
oConn.Open();
oCmd= oConn.CreateCommand();
oCmd.CommandText="SELECT Montant sum Montant FROM Teletransmission,Cheque,Espece Where date BETWEEN.........etc".
n=oCmd.ExecuteNonQuery();

Ensuite je veux récupérer le résultat dans un textBox...
Quelqu'un peut-il me donner le code?
Merci

5 réponses

riko77 Messages postés 4 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 22:21
Bon çà y est je me suis inspiré de tes conseilles,par contre j'ai conservé le type "object", et j'ai modifié le type de l'attribut "montant" dans acces, je l'ai passé en format "texte".

object montant1 = oRdr1.GetValue(0);
object montant2 = oRdr2.GetValue(0);
object montant3 = oRdr3.GetValue(0);
string montantTotal = (Convert.ToDouble(montant1) + Convert.ToDouble(montant2) + Convert.ToDouble(montant3)).ToString();

textBox1.Text = montant1.ToString();
textBox2.Text = montant2.ToString();
textBox4.Text = montant3.ToString();
textBox5.Text = montantTotal;

Merci beaucoup pour ta patience et ton aide, ciao Smirnéo!
3
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
19 févr. 2010 à 11:27
Salut mais ta requête fonctionne correctement dans la base??
car si non met
"select sum(montant) from..."
;
mais pour ca il faut que dans chacune de tes tables il y est la colonne montant!!
0
riko77 Messages postés 4 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 24 février 2010
23 févr. 2010 à 21:20
Ok désolé pour le retard....
Tu as parfaitement raison la requête fonctionne mais j'ai un autre soucis, je voudrais caster un type "object" en float quelqu'un a-t-il la réponse?
J'ai indiqué par un commentaire l'endroit où çà coince sinon le reste est opé.
Bon mon code est un peu dégueu mais je débute ;-)
voici mon code:

//on choisi la requete sql
this.SqlSearch = "SELECT * FROM Teletransmission WHERE Date BETWEEN " + dt1 + "and "+ dt2 + "";
this.SqlSearch1 = "SELECT * FROM Cheque WHERE Date BETWEEN " + dt1 + "and " + dt2 + "";
this.SqlSearch2 = "SELECT * FROM Espece WHERE Date BETWEEN " + dt1 + "and " + dt2 + "";

#region récupération de la somme des montants
//on ouvre la connection
try
{
this.Conn.Open();
OleDbCommand oCmd1 = Conn.CreateCommand();
OleDbCommand oCmd2 = Conn.CreateCommand();
OleDbCommand oCmd3 = Conn.CreateCommand();

//string montantTotal;
string req1 = "SELECT SUM (Montant) FROM Teletransmission WHERE date BETWEEN " + dt1 + "and " + dt2 + "";
string req2 = "SELECT SUM (Montant) FROM Cheque WHERE date BETWEEN " + dt1 + "and " + dt2 + "";
string req3 = "SELECT SUM (Montant) FROM Espece WHERE date BETWEEN " + dt1 + "and " + dt2 + "";

oCmd1.CommandText = req1;
oCmd2.CommandText = req2;
oCmd3.CommandText = req3;

OleDbDataReader oRdr1 = oCmd1.ExecuteReader();
OleDbDataReader oRdr2 = oCmd2.ExecuteReader();
OleDbDataReader oRdr3 = oCmd3.ExecuteReader();
while ((oRdr1.Read() true) & (oRdr2.Read() true) &(oRdr3.Read() == true))
{
object montant1 = oRdr1.GetValue(0);
object montant2 = oRdr2.GetValue(0);
object montant3 = oRdr3.GetValue(0);

//object MontantTotal = montant1+ montant2+ montant3;
//MessageBox.Show("montant1 total :" + MontantTotal);
//textBox1.Text = MontantTotal.ToString();
textBox1.Text = montant1.ToString();
textBox2.Text = montant2.ToString();
textBox4.Text = montant3.ToString();
int montantTotal= (((int)(montant1))+ ((int)(montant2))+((int)(montant3))); // c'est ici que çà coince il faut un string
// ou un float dans le textBox5
textBox5.Text = montantTotal.ToString();
}
oRdr1.Close(); //oRdr2.Close(); oRdr3.Close();


this.Conn.Close();

Merci infiniment.
0
Smirneo Messages postés 34 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 15 décembre 2011
24 févr. 2010 à 08:40
Alors pour passer un object en int tu fait :
int x = Int32.TryParse(...);


Mais ton probleme est un peu plus haut quand tu déclare tes montant, declare des string:
string montant1 = oRdr1.GetString(0);
string montantTotal =Convert.ToInt32(montant1+montant2+montant3).ToString();


Voila bon dev
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
riko77 Messages postés 4 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 21:58
J'ai modifié le code de cette façon:


string montant1 = oRdr1.GetString(0);
string montant2 = oRdr2.GetString(0);
string montant3 = oRdr3.GetString(0);
string montantTotal = Convert.ToDouble(montant1 + montant2 + montant3).ToString();
textBox1.Text = montant1;
textBox2.Text = montant2;
textBox4.Text = montant3;
textBox5.Text = montantTotal;

Mais çà génère une erreur "cast non valide". j'ai converti en double car il s'agit de nb à virgule. Je "tape" dans une base access, l'attribut "montant" est de type monétaire avec un format "nombre général".
J'avoues que je suis un peu coinçosse là.
0
Rejoignez-nous