Prendre une valeur dans la base et l'afficher

Résolu
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   -  
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   1 011
 
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 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
Oh mince ...

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

Merci beaucoup :)
0
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
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 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
Personne ne sait ?
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
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