Controle d'erreur

Signaler
Messages postés
61
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
25 septembre 2011
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
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

Messages postés
14792
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2021
155
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
Messages postés
61
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
25 septembre 2011

Peut-tu préciser l'erreur , j'ai pas bien compris , j'ai déclaré le Nbus dans la requete ! Merci beaucoup !
Messages postés
616
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
9 février 2017
6
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
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
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é. -
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
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é. -