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

Signaler
Messages postés
4
Date d'inscription
mercredi 17 février 2010
Statut
Membre
Dernière intervention
24 février 2010
-
Messages postés
4
Date d'inscription
mercredi 17 février 2010
Statut
Membre
Dernière intervention
24 février 2010
-
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

Messages postés
4
Date d'inscription
mercredi 17 février 2010
Statut
Membre
Dernière intervention
24 février 2010

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!
Messages postés
34
Date d'inscription
mardi 3 février 2009
Statut
Membre
Dernière intervention
15 décembre 2011

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!!
Messages postés
4
Date d'inscription
mercredi 17 février 2010
Statut
Membre
Dernière intervention
24 février 2010

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.
Messages postés
34
Date d'inscription
mardi 3 février 2009
Statut
Membre
Dernière intervention
15 décembre 2011

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
Messages postés
4
Date d'inscription
mercredi 17 février 2010
Statut
Membre
Dernière intervention
24 février 2010

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à.