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

riko77 4 Messages postés mercredi 17 février 2010Date d'inscription 24 février 2010 Dernière intervention - 18 févr. 2010 à 19:45 - Dernière réponse : riko77 4 Messages postés mercredi 17 février 2010Date d'inscription 24 février 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
riko77 4 Messages postés mercredi 17 février 2010Date d'inscription 24 février 2010 Dernière intervention - 24 févr. 2010 à 22:21
3
Merci
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!

Merci riko77 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de riko77
Smirneo 34 Messages postés mardi 3 février 2009Date d'inscription 15 décembre 2011 Dernière intervention - 19 févr. 2010 à 11:27
0
Merci
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!!
Commenter la réponse de Smirneo
riko77 4 Messages postés mercredi 17 février 2010Date d'inscription 24 février 2010 Dernière intervention - 23 févr. 2010 à 21:20
0
Merci
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.
Commenter la réponse de riko77
Smirneo 34 Messages postés mardi 3 février 2009Date d'inscription 15 décembre 2011 Dernière intervention - 24 févr. 2010 à 08:40
0
Merci
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
Commenter la réponse de Smirneo
riko77 4 Messages postés mercredi 17 février 2010Date d'inscription 24 février 2010 Dernière intervention - 24 févr. 2010 à 21:58
0
Merci
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à.
Commenter la réponse de riko77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.