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

VB.NET Discussion :

Faire une insertion dans une BD Access


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 0
    Points
    0
    Par défaut Faire une insertion dans une BD Access
    bonjour ! voila je veux faire une insertion dans une BD mais a chaque fois j'ai un message d'erreur le suivant : (Erreur de syntaxe dans l'instruction INSERT INTO.) en indiquant la ligne de code (cmd.ExecuteNonQuery()).et je ne comprend pas ou est l'erreur.merci de votre aide .voici la tranche de code :


    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
    Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\samir\Desktop\BD_Eleve.accdb")
     
     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
     
            If (String.IsNullOrWhiteSpace(TextBox1.Text) AndAlso String.IsNullOrWhiteSpace(TextBox2.Text)) Then
                MessageBox.Show("il faut remplir tout les champs")
                Return
            End If
            'etape de declaration de la commande d'insertion
            Dim cmd As New OleDbCommand("insert into note1 (NomEtPrenom,Adresse,DateDeNaissance) values ('" & TextBox1.Text & "','" & TextBox2.Text & "',#" & DateTimePicker1.Value.ToString("yyyy / MM / dd") & "#,)")
     
            cmd.Connection = con
            con.Open()
            cmd.ExecuteNonQuery()
            con.Close()
            TextBox1.Text = String.Empty
            TextBox2.Text = String.Empty
        End Sub

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Bonjour

    Utilise des requêtes paramétré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
    16
    17
    18
    Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\samir\Desktop\BD_Eleve.accdb")
    Private sub Insert
     Dim command As New OleDbCommand()
      command.Connection = con
      command.CommandText = "INSERT INTO note1 (NomEtPrenom,Adresse,DateDeNaissance) VALUES (?,?,?);"
      command.Parameters.Add("?", OleDbType.BSTR).Value = TextBox1.Text
      command.Parameters.Add("?", OleDbType.BSTR).Value = TextBox2.Text
      command.Parameters.Add("?", OleDbType.BSTR).Value = DateTimePicker1.Value.ToString("yyyy / MM / dd")
      command.ExecuteNonQuery()
     
    end sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
      If (String.IsNullOrWhiteSpace ......
     
      Insert
      TextBox1.Text = String.Empty
    TextBox2.Text = String.Empty
    end sub

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    le sub insert doit etre a l'intrieur du button3 , quand je clic dessus l'insertion se fait

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    enlever la virgule à la fin et il faut que votre champ DateDeNaissance soit de format date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmd As New OleDbCommand("insert into note1 (NomEtPrenom,Adresse,DateDeNaissance) values ('" & TextBox1.Text & "','" & TextBox2.Text & "',#" & DateTimePicker1.Value.ToString("yyyy / MM / dd") & "#)")

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    @gnain
    Il ne faut pas faire de concaténation de chaîne pour les requêtes.
    Comme l'indique shayw, il faut utiliser les requêtes paramétrées. Voir Tuto.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    LARBI18 a cité ..... je ne comprend pas ou est l'erreur.merci de votre aide ....
    Je crois qu'il était important de lui répondre ce qui' il avait demandé.

    Ceci dit. vous avez absolument raison pour les requêtes paramétrées. pour plus de sureté.

    Mais moi aussi j'utilise assez souvent les concaténation de chaîne pour les requêtes.
    On peut aussi ne pas autorisé certain caractère au moment de la saisie dans un textbox comme ' ou " ou & ou ;

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par gnain Voir le message
    On peut aussi ne pas autorisé certain caractère au moment de la saisie dans un textbox comme ' ou " ou & ou ;
    Ou comment construire une usine à gaz.
    On ne le répètera jamais assez, l'utilisation des requêtes paramètrées est la seule solution fiable.
    Cela est plus sur, évite la gestion (et doublage) des ' , et gére les formats de données. Bref plus sur, plus simple.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Réponses: 15
    Dernier message: 26/01/2015, 19h37
  2. Réponses: 8
    Dernier message: 15/06/2010, 16h50
  3. Réponses: 5
    Dernier message: 27/07/2007, 16h21
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. [MySQL] Insertion d'une image dans une div d'une news
    Par godsilken50 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/05/2007, 16h58

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