Probleme insertion avec clé primaire autoincrementé

Résolu
cs_atino Messages postés 37 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 14 septembre 2009 - 20 avril 2009 à 12:18
arxfwf Messages postés 42 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 10 juin 2009 - 21 avril 2009 à 00:59
Bonjour,

j'ai un formulaire pour demander un devis ,
dans une table devis ,j'ai plusieurs colonnes (numdevis, nom, adresse, ville, telephone, mail, commentaire)

quand l'utilisateur appuie sur le bouton valider :

    protected void BtnEnvoyerDevis_Click(object sender, EventArgs e)
    {
        OleDbConnection cnx = new OleDbConnection("Provider=SQLOLEDB; ..........;
        try { cnx.Open(); }
        catch (Exception ex) { LblErreur.Text = "Echec de l'enregistrement du devis" + ex.Message; return; }
        OleDbCommand com;


        com = new OleDbCommand();
        com.Connection = cnx;
        com.CommandType = CommandType.StoredProcedure;
        com.CommandText = "demandedevis";


        try
        {
            OleDbParameter param = com.Parameters.Add("le_retour", OleDbType.Integer, 4);
            param.Direction = ParameterDirection.ReturnValue;
            com.Parameters.Add("@nom", OleDbType.VarChar, 100).Value = TxtBoxNomDevis.Text;
            com.Parameters.Add("@adresse", OleDbType.VarChar, 100).Value = TxtBoxAdresseDevis.Text;
            com.Parameters.Add("@ville", OleDbType.VarChar, 20).Value = TxtBoxVilleDevis.Text;
            com.Parameters.Add("@telephone", OleDbType.VarChar, 14).Value = TxtBoxTelephoneDevis.Text;
            com.Parameters.Add("@mail", OleDbType.VarChar, 100).Value = TxtBoxMailDevis.Text;
            com.Parameters.Add("@commentaire", OleDbType.VarChar, 1000).Value = TxtBoxCommentaireDevis.Text;
         


        }
        catch (Exception ex)
        {
            LblErreur.Text = "Le devis n'a pas été enregistrée " + ex.Message;


        }


        cnx.Close();
    }

Ma procedure stockée :

ALTER PROCEDURE [dbo].[demandedevis]
    @nom VarChar(100),
    @adresse VarChar(100),
    @ville VarChar(20),
    @telephone VarChar(14),
    @mail VarChar(100),
    @commentaire Varchar(1000)
   
as


INSERT INTO DEVIS values(default, @nom, @adresse, @ville, @telephone, @mail, @commentaire)
default pour mettre la clé primaire autoincrementée

je n'ai pas de message d'erreur en me disant que je n'arrive pas à me connecter à la base ,ni qu'il n'y a pas de format incorrecte
mais en faisant un select * from devis ,rien de nouveau n'apparait ,je ne vois pas ou je me plante

En esperant que quelqu'un puisse m'aider

merci

4 réponses

arxfwf Messages postés 42 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 10 juin 2009
20 avril 2009 à 15:46
Bonjour,

Je n'ai jamais utilisé de procedur stocké par asp.net donc je penses dire une betise mais juste au cas ou :
Tu créé ta commande
Tu ajoutes les paramétres
Mais ne faut il pas dire au programme d'envoyer tout ça avant de fermer la connexion ?
( une sorte de com.ExecuteNonQuery )

A+
3
cs_atino Messages postés 37 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 14 septembre 2009
20 avril 2009 à 14:14
j'ai modifié ma procédure stockée en:

INSERT INTO DEVIS (nom, adresse, ville, telephone, mail, commentaire) values(@nom, @adresse, @ville, @telephone, @mail, @commentaire)

les scalaires @.... sont normalement récupérer grace à ca :
 OleDbParameter param = com.Parameters.Add("le_retour", OleDbType.Integer, 4);
            param.Direction = ParameterDirection.ReturnValue;
            com.Parameters.Add ("@nom ", OleDbType.VarChar, 100).Value = TxtBoxNomDevis.Text;
            com.Parameters.Add("@adresse", OleDbType.VarChar, 100).Value = TxtBoxAdresseDevis.Text ;
            com.Parameters.Add("@ville", OleDbType.VarChar, 20).Value = TxtBoxVilleDevis.Text;
            com.Parameters.Add("@telephone", OleDbType.VarChar, 14).Value = TxtBoxTelephoneDevis.Text ;
            com.Parameters.Add("@mail", OleDbType.VarChar, 100).Value = TxtBoxMailDevis.Text;
            com.Parameters.Add("@commentaire", OleDbType.VarChar, 1000).Value = TxtBoxCommentaireDevis.Text;

mais ca ne marche toujours pas
0
cs_atino Messages postés 37 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 14 septembre 2009
20 avril 2009 à 23:01
erfffffffff si c'etait bien ça

com.ExecuteNonQuery();
            if (param.Value.ToString() == "-1")
                LblErreur.Text = "recommence";
            else
            {
                LblErreur.Text = "Devis enregistré ";
            }

le pire c'est que je l'avais fait sur d'autres formulaires mais je n'avais pas tout repris pour celui ci

En tout cas merci arxfwf pour m'avoir mis sur la voix avec  com.ExecuteNonQuery();

           
0
arxfwf Messages postés 42 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 10 juin 2009
21 avril 2009 à 00:59
Toujours les plus petits details qui font les vilains x)
0
Rejoignez-nous