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

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

4 réponses

Meilleure réponse
Messages postés
42
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2009
3
Merci
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+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de arxfwf
Messages postés
37
Date d'inscription
lundi 25 décembre 2000
Statut
Membre
Dernière intervention
14 septembre 2009
0
Merci
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
Commenter la réponse de cs_atino
Messages postés
37
Date d'inscription
lundi 25 décembre 2000
Statut
Membre
Dernière intervention
14 septembre 2009
0
Merci
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();

           
Commenter la réponse de cs_atino
Messages postés
42
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2009
0
Merci
Toujours les plus petits details qui font les vilains x)
Commenter la réponse de arxfwf