Probleme insertion avec clé primaire autoincrementé [Résolu]

Signaler
Messages postés
37
Date d'inscription
lundi 25 décembre 2000
Statut
Membre
Dernière intervention
14 septembre 2009
-
arxfwf
Messages postés
42
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2009
-
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

Messages postés
42
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2009

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+
Messages postés
37
Date d'inscription
lundi 25 décembre 2000
Statut
Membre
Dernière intervention
14 septembre 2009

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
Messages postés
37
Date d'inscription
lundi 25 décembre 2000
Statut
Membre
Dernière intervention
14 septembre 2009

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();

           
Messages postés
42
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2009

Toujours les plus petits details qui font les vilains x)