Prendre une valeur dans la base et l'afficher

Résolu/Fermé
cocodu67... Messages postés 3161 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 1 août 2024 - 9 févr. 2014 à 17:10
cocodu67... Messages postés 3161 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 1 août 2024 - 10 févr. 2014 à 18:47
Bonsoir,

J'ai un programme en C# et j'ai un problème sur la partie qui doit rechercher si un Identifiant est dans la base et si l'identifiant est présent ça cherche le solde restant et l'affiche dans une messagebox.


Voici le bout de code :

https://pastebin.com/67bKf81i

J'ai préféré le mettre sur pastbin car mes lignes sont très longues.

Le bug :

Je met un identifiant qui existe dans la base, le message "Elève trouvé" s'affiche mais ensuite j'ai le message "Erreur", ce qui veut dire que la partie qui récupère la valeur marquer dans fldSolde fait planter le programme mais le try catch permet d'éviter cela en affichant un message d'erreur.

Concernant ma base de données :
fldSolde est un champ en int
fldIdentifiant est un champ en int

Quelqu'un aurait-il une idée de ce que je dois modifier ?

Merci d'avance
A voir également:

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
9 févr. 2014 à 17:16
Bonjour,

Un coup tu fais ta requête sur tblEleve sans "s", et un coup sur tblEleves avec le "s".

Xavier
0
cocodu67... Messages postés 3161 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 1 août 2024 145
9 févr. 2014 à 17:20
Oh mince ...

Difficile de faire une erreur encore plus idiote. Une heure que je suis dessus ...

Merci beaucoup :)
0
cocodu67... Messages postés 3161 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 1 août 2024 145
9 févr. 2014 à 17:37
Désolé de vous déranger encore une fois mais je me permet de vous demander encore quelque chose.

Une fois que le programme a constaté que l'identifiant est présent dans la base, il doit vérifier si le solde restant est supérieur ou égal à 1 euros si bChoix est égal à true et supérieur ou égal à 4 euros sur bChoix est égal à false. Si la condition est respectée, la valeur est décrémentée du prix du petit pain ou de la cantine. Le reste je saurais faire mais là je bloque encore ...

Voici les erreurs :

https://www.cjoint.com/c/DBjrIF5jUg5

                    
try
                    {
                        string tmp;
                        maCommandeSolde.Connection.Open();
                        maCommandeSolde.ExecuteNonQuery();
                        tmp = Convert.ToString(maCommandeSolde.ExecuteScalar());

                         iSoldeRestant = Convert.ToInt32(tmp);
                         if (bChoix == true) // Petits pains 1 euros
                         {
                             if (iSoldeRestant => 1)
                                 iSolde = iSolde - 1;
                             else
                                 MessageBox.Show("Solde insuffisant");
                         }
                         else // Cantine 4 euros
                         {
                             if (iSoldeRestant => 4)
                                 iSolde = iSolde - 4;
                             else
                                 MessageBox.Show("Solde insuffisant");
                         }
                        maCommandeSolde.Connection.Close();
                    }
                    catch { MessageBox.Show("Erreur"); }
0
cocodu67... Messages postés 3161 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 1 août 2024 145
9 févr. 2014 à 20:20
Personne ne sait ?
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
9 févr. 2014 à 22:10
Le problème est dans tes « supérieur ou égal ». Il faut les écrire >= et pas =>, car ce dernier signe a une autre signification en c# (les fameuses lambda expression dont il est question dans les messages d'erreur).
A priori si tu corriges juste ça, les 4 erreurs disparaissent.
0
cocodu67... Messages postés 3161 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 1 août 2024 145
Modifié par cocodu67... le 10/02/2014 à 18:50
Oh merci c'est parfait :)

Tout fonctionne maintenant.

PS :

Le

tmp = Convert.ToString(maCommandeSolde.ExecuteScalar());
iSoldeRestant = Convert.ToInt32(tmp);

Je l'ai simplifié par

iSoldeRestant = Convert.ToInt32(maCommandeSolde.ExecuteScalar());

Et j'ai aussi remarqué que je me suis mélangé les pinceaux en mettant iSolde alors que partout c'est iSoldeRestant.
0