IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Erreur insert dans une base Access


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2006
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Erreur insert dans une base Access
    Voilà, j'ai fait une forme qui doit enregistrer les données de 2 textbox dans une table qui à 3 champs : idSect (PK), code (num), et libelle (string)
    Voici le code qui est déclenché par un bouton pour l'enregistrement de données.
    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
     
                OleDbCommand insCommand = new OleDbCommand("", Conn);
                insCommand.CommandText = "insert into secteurs (idSect, codeSecteur, libSecteur) VALUES ('','?code','?libelle')";
                //insCommand.CommandText = "insert into secteurs VALUES ('?code','?libelle');";
     
                insCommand.Parameters.Add("?code", OleDbType.Integer);
                insCommand.Parameters.Add("?libelle", OleDbType.VarChar);
     
                insCommand.Parameters[0].Value = textBox1.Text;
                insCommand.Parameters[1].Value = textBox2.Text;
     
                insCommand.ExecuteNonQuery();
                //On lève l'exception.
                //try
                Conn.Close();
    J'ai une exception "type de données incompatible dans l'expression du critère", mais je n'arrive pas à comprendre pourquoi ?
    Est-ce à cause de mon premier champ (autoincrement) qui doit aussi être enregistré ?

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Si idSect est une clé autoincrémentée, j'aurais tendance à essayer avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insCommand.CommandText = 
    "insert into secteurs (codeSecteur, libSecteur) VALUES (?code,?libelle)";

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2006
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Salut,
    J'ai déjà essayé mais j'ai l'exception :
    "Erreur de syntaxe (opérateur absent) dans l'expression '?code'." qui en découle et là je suis bloqué car je vois pas d'où ça vient.

  4. #4
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Bonsoir,
    Ce que je te propose c'est d'essayer ça, Source trouvée sur MSDN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insCommand.CommandText = 
    "insert into secteurs (codeSecteur, libSecteur) VALUES (? ,?)";
    Par contre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insCommand.Parameters.Add("@code", OleDbType.Integer);
    insCommand.Parameters.Add("@libelle", OleDbType.VarChar);
    Remplace les points d'interrogation par des @

    Je sais que c'est pas très propre comme écriture mais faut faire avec

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2006
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Je ne l'avais pas vu sur MSDN (en fait, j'ai un peu de mal à trouver ce dont j'ai besoin sur MSDN)
    Merci à partir de ce que tu m'as donné, j'ai fait le code suivant qui est plus court que le précédent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                insCommand.CommandText = "insert into secteurs (codeSecteur, libSecteur) VALUES (?,?)";
     
                insCommand.Parameters.Add("@code", OleDbType.Integer).Value = textBox1.Text;
                insCommand.Parameters.Add("@libelle", OleDbType.VarChar).Value = textBox2.Text;
    Maintenant que j'ai compris, je vais pouvoir le réemployer dans le vrai programme.

    Encore milles merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] comment faire des insert dans une base access sans avoir access
    Par Poulki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/08/2012, 07h45
  2. [ADO.net] insertion dans une base Access
    Par nightcyborg dans le forum C#
    Réponses: 12
    Dernier message: 01/09/2009, 12h40
  3. [VS2005] insertion d'images dans une base access
    Par lightedge dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/09/2007, 09h25
  4. Requête d'insertion dans une base ACCESS
    Par kurul1 dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/11/2006, 17h41
  5. [C#] Insertion dans une base Access .mdb
    Par borgfabr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/03/2005, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo