Controle d'erreur

abbeille Messages postés 61 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 25 septembre 2011 - 2 sept. 2011 à 12:19
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 2 sept. 2011 à 15:43
Bonjour a vous tous !!
j'utilise une fonction de controle dans ma table registre , si je saisie un n°bus et date , qui est déja dans la table, il me sors une erreur , je vous donne un exemple , je saisie par exemple 5 dans le n°bus , et la date d'hier , aprés quand je veux saisir le meme n°bus dans la date hier , il faut qu' il me sorte une erreur , j'ai essayé cette fonction , mais ca ne marche pas , il me dis que le NBUS n'est pas déclaré
Voila la fonction que j'affecte au bouton ajouté
 public void fonction (SqlConnection cnx, registre H)
        {
            
            string b = "Select count (*) from Registre where Nbus=@Nbus and DateSortie = '" + DateTime.Now + "' ";
            SqlCommand cmd = new SqlCommand(b,Sql.Instance.GetSqlConnection());
            int b1 = (int)cmd.ExecuteScalar();
        if (b1 == 0)
            {
                string str = @"INSERT INTO Registre([Nbus],[DateSortie],[HeureSortie],[MCS],[Receveur],[NFR])
                           VALUES (@Nbus,@DateSortie,@HeureSortie,@MCS,@Receveur,@NFR)";
                using (SqlCommand cmds = new SqlCommand(str, cnx))
                {
                    cmd.Parameters.Add("Nbus", SqlDbType.Int).Value = H.nbus;
                    cmd.Parameters.Add("DateSortie", SqlDbType.NVarChar).Value = H.date_sortie;
                    cmd.Parameters.Add("HeureSortie", SqlDbType.NVarChar).Value = H.heure_sortie;
                    cmd.Parameters.Add("MCS", SqlDbType.NVarChar).Value = H.mcs;
                    cmd.Parameters.Add("Receveur", SqlDbType.NVarChar).Value = H.receveur;
                    cmd.Parameters.Add("NFR", SqlDbType.NVarChar).Value = H.nfr;
                    //   cmd.Parameters.Add("MCE", SqlDbType.NVarChar).Value = H.mce;
                    //   cmd.Parameters.Add("HeureEntree", SqlDbType.NVarChar).Value = H.heure;
                    //   cmd.Parameters.Add("Motif", SqlDbType.NVarChar).Value = H.motif;

                    cmd.ExecuteNonQuery();
                }
                  {
                      Response.Write("<script>alert('Ce numéro de bus est déja inséré')</script>");
                }
            }

5 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
2 sept. 2011 à 12:30
Bonjour,

Dans ta requête SELECT, tu fais appel à "@Nbus", sans définir la valeur du paramètre.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
abbeille Messages postés 61 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 25 septembre 2011
2 sept. 2011 à 12:39
Peut-tu préciser l'erreur , j'ai pas bien compris , j'ai déclaré le Nbus dans la requete ! Merci beaucoup !
0
dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
2 sept. 2011 à 13:30
Salut,

Ce que veux dire NHenry c'est dans ta requête suivante :

"Select count (*) from Registre where Nbus=@Nbus and DateSortie = '" + DateTime.Now + "' ";


Nbus n'a pas de valeur d'affectée.
Autant tu affectes explicitement une valeur à DateSortie DateTime.Now, autant tu fais Nbus @Nbus mais quelle est donc sa valeur ????

J'espère avoir bien traduit la pensée de NHenry.

@pluche

SD

[b]"Chez ceux qui semblent très vertueux se cachent en général la vanité, l'orgueil, l'intolérance".

P.Coehlo (Maktub 2004)/b
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
2 sept. 2011 à 15:42
Salut

Dans tes parameters, tu dois ajouter le @ dans le nom.

cmd.Parameters.Add("@Nbus", SqlDbType.Int).Value = H.nbus;


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0

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

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
2 sept. 2011 à 15:43
De plus, tu dois rajouter cette ligne AVANT ton cmd.ExecuteScalar()

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
Rejoignez-nous