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 :

Problème INSERT INTO


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut Problème INSERT INTO
    Bonjour, j'ai une table access et j'utilise VB.

    Je veux envoyer des informations comprises dans des textboxs dans ma base ACCESS:


    Mon 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
     
    Public Class Form4
        Dim cn As New OleDbConnection
        Dim Obj_Command As New OleDbCommand
     
        Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source='C:\Users\Samuel\Desktop\BASE.mdb';"
            cn.Open()
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If cn.State = ConnectionState.Open Then
                MsgBox("connecté avec succès", MsgBoxStyle.Information)
            End If
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Obj_Command.Connection = cn
            Obj_Command.CommandText = "INSERT INTO MEMBRES (ID_MEMBRE, PRENOM) VALUES('" & TextBox_ID.Text & "' ,'" & TextBox_prenom.Text & "')"
            Obj_Command.ExecuteNonQuery()
     
        End Sub
    MESSAGE D'ERREUR:
    L'instruction INSERT INTO contient le nom de champ inconnu suivant : 'ID_MEMBRE'. Assurez-vous que vous avez correctement saisi le nom, puis recommencez l'opération.
    pourtant le nom correspond bien à celui que j'ai donné dans ma table
    et le lien fonction car mon button_2 me retourne bien que la connexion est ouverte.

    Quelqu'un pourrait il m'aider.

    En vous remerciant.

    Samuel.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    Salut,
    Récupère ta requete dans le débuggueur, et lance la sous Access déjà pour voir si ça passe. Après on verra.

  3. #3
    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
    Par défaut
    Bonjour,

    Il est fort probable qu'il y ai une faute de frappe.

    Sinon il est préférable d'utiliser les requêtes paramétrées. Voir Tuto ou Faq.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                Obj_Command.CommandText = "INSERT INTO MEMBRES (ID_MEMBRE, PRENOM) VALUES(?,?)"
                Obj_Command.Parameters.Add("?", OleDbType.VarChar).Value = TextBox_ID.Text
                Obj_Command.Parameters.Add("?", OleDbType.VarChar).Value = TextBox_prenom.Text
                Obj_Command.ExecuteNonQuery()
    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.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut
    Je suis débutant, je ne comprends pas comment procéder pour récupérer une requête et la lancer dans access.

    On me dit dans le debogage que l'exception oledbexception n'a pas été gérée.

    rv26t. Je vais essayer votre méthode et je vous dirai ce qu'il en est. Je vous remercie.

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Si ID_MEMBRE est de type auto-increment, il ne doit pas figurer dans la commande INSERT.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut
    @rv26t. J'ai essayé votre code, sans succès.

    @Graffito: ID_MEMBRE n'est pas de type auto-incrément

  7. #7
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Si ID_MEMBRE est de type entier, pas de quotes autour de TextBox_ID.Text
    (ce type d'erreur est évitable en utilisant les requêtes paramétrées comme indiqué par rv26t)

    Essaie de rentrer dans Access pour modifier la structure de la table :
    - change le nom de la colonne ID_MEMBRE en ID_MEMBREXXX
    - sauve le changement,
    - rechange le nom de la colonne en ID_MEMBRE,
    - resauve.

  8. #8
    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
    Par défaut
    Montre nous la structure de ta table
    Sinon en test avec ce que tu nous as indiqué : voir cette image de test Nom : Aide DVP Insert.jpg
Affichages : 769
Taille : 26,2 Ko regarde quelles sont les différences (je suis en access 2007)
    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
        Dim cn As New OleDbConnection
        Dim Obj_Command As New OleDbCommand
     
        Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\data\personnes\personnes.accdb;" ' pour mes tests en access 2007
            cn.Open()
            If cn.State = ConnectionState.Open Then
                Obj_Command.Connection = cn
                Obj_Command.CommandText = "INSERT INTO MEMBRES (ID_MEMBRE, PRENOM) VALUES(?,?)"
                Obj_Command.Parameters.Add("?", OleDbType.VarChar).Value = TextBox_ID.Text
                Obj_Command.Parameters.Add("?", OleDbType.VarChar).Value = TextBox_prenom.Text
                Obj_Command.ExecuteNonQuery()
            End If
            cn.Close()
        End Sub
    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.

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut
    Ok. En refaisant un projet et en faisant votre code, ça marche.

    J'avais un problème en effet à ID_MEMBRES, dans le mode affichage de ma base access il y avait un S, mais pas dans le mode normal.

    En revanche, je n'arrive toujours pas à le faire fonctionner dans mon projet initial.

    Je vais trouver ce problème, et je viendrai l'expliquer ici avant de mettre ce sujet en résolu.

    Je vous remercie.

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut
    Ok, j'ai fait comme ça et désormais ça fonctionne.

    Je vous remercie.


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
     
    Public Class Form4
        Dim cn As New OleDbConnection
        Dim Obj_Command As OleDbCommand
     
        Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source='C:\Users\Samuel\Desktop\Base.mdb';"
            cn.Open()
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If cn.State = ConnectionState.Open Then
                MsgBox("connecté avec succès", MsgBoxStyle.Information)
            End If
     
     
        End Sub
     
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Obj_Command = New OleDbCommand
            Obj_Command.Connection = cn
     
     
            Obj_Command.CommandText = "INSERT INTO MEMBRES(ID_MEMBRES, PRENOM) VALUES('" & TextBox_ID.Text & "' ,'" & TextBox_prenom.Text & "')"
            Obj_Command.ExecuteNonQuery()
     
     
     
        End Sub

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

Discussions similaires

  1. Problème Insert into table intermédiaire
    Par richard_sraing dans le forum Requêtes
    Réponses: 1
    Dernier message: 24/01/2009, 23h58
  2. [A-03] Problème insert into et date
    Par thierrybatlle dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 20/10/2008, 09h17
  3. problème INSERT INTO C#/Access
    Par jerome71300 dans le forum Accès aux données
    Réponses: 8
    Dernier message: 18/08/2008, 14h34
  4. Probléme Insert into
    Par dellys2 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/02/2007, 11h46
  5. [Requête] Problème INSERT INTO
    Par lerico dans le forum Requêtes et SQL.
    Réponses: 22
    Dernier message: 10/01/2006, 18h12

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