Bonjour à tous,

je me suis documentée avant de poster, et malgré mon niveau, je crois que mon code est bon ; vraiment je ne vois pas l'erreur que j'ai faite ! peut être que quelqu'un d'externe y verra mieux ?

Mon problème est tout simple, j'ai une proc_stockée usp_insertDetails (qui fonctionne bien quand je l'execute à part, avec des valeurs pour ses paramètres entrées manuellement). Elle prend 5 paramètres, les 4 premiers fonctionnent bien mais au dernier j'ai une erreur : "@MyForfaitDiamId" is not supplied. Cette erreur apparait quand le systeme essaie d'executer la requete. (avant dernière ligne)

Voilà mon code c#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
SqlCommand maCommande2 = new SqlCommand();
maCommande2.Connection = maConnexion;
 
maCommande2.CommandText = "usp_insertDetails";
maCommande2.CommandType = CommandType.StoredProcedure;
                                maCommande2.Parameters.AddWithValue("@MyProductId", Convert.ToInt32(produitId.Value.ToString()));
                                maCommande2.Parameters.AddWithValue("@MyCouleurId", Convert.ToInt32(couleur.Value));
                                maCommande2.Parameters.AddWithValue("@MyDiametreId", Convert.ToInt32(diametre.Value));
                                maCommande2.Parameters.AddWithValue("@MyLongueurId", Convert.ToInt32(longueur.Value));
 
if ((Convert.ToInt32(diametre.Value) == 2) || (Convert.ToInt32(diametre.Value) == 3))
                                    maCommande.Parameters.AddWithValue("@MyForfaitDiamId", 2);
else if ((Convert.ToInt32(diametre.Value) == 4) || (Convert.ToInt32(diametre.Value) == 5) || (Convert.ToInt32(diametre.Value) == 6))
                                    maCommande.Parameters.AddWithValue("@MyForfaitDiamId", 3);
                                else maCommande.Parameters.AddWithValue("@MyForfaitDiamId", 1);
 
maConnexion.Open();
maCommande2.ExecuteNonQuery();
maConnexion.Close();
comme vous le voyez, le systeme est censé déduire (avec les if) le 5ème paramètre tandis que les autres sont directement puisé dans un controle.

Je précise qu'avant que je ne rajoute la partie des if pour le 5ème paramètre, (ma proc_stocké n'en avait que 4), ça fonctionnait parfaitement.

Si je ne suis pas claire, dites le moi.

Merci de votre aide

ps : je travaille avec visual studio 2008