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 :

Insérer un nouveau enregistrement - vb2010 acces 2007 [Débutant]


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Par défaut Insérer un nouveau enregistrement - vb2010 acces 2007
    salut
    je développe une application de gestion des élèves et je suis bloqué à l'ajout d'un nouveau enregistrement .
    ma table est:
    create table eleves (NEleve int identity primary key, nom varchar(50), prenom varchar(50), groupe float, note1 float , note2 float, moyenne float)
    un module qui contient des variables globales:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Imports System.Data.OleDb
     
    Module Module1
        'instancier l'objet de connexion
        Public Cn As New OleDbConnection("Provider=MicroSoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\gestion.accdb")
        Public CmdCombo, CmdList As New OleDbCommand
        Public DrCombo, DrList As OleDbDataReader
    End Module
    un bouton add dont le code est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
            Cn.Open()
            CmdList.CommandType = CommandType.Text
            CmdList.CommandText = "INSERT INTO ELEVES (NEleve, Nom, Prenom, Groupe) values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & Val(TextBox4.Text) & "'"
            CmdList.Connection = Cn
            CmdList.ExecuteNonQuery()
            MsgBox("Elève ajouté avec succès", MsgBoxStyle.Information, "Ajout")
            Cn.Close()
     
        End Sub
    Mon problème est que je n'arrive pas à remplir un nouveau enregistrement par des données de 4 textbox et laisser les autres champs de l'enregistrement vides.
    merci d'avance

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Quel est le message d'erreur ?
    C'est volontaire la non-fin de parenthèse dans ta requête d'Insert ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    Quel est le message d'erreur ?
    C'est volontaire la non-fin de parenthèse dans ta requête d'Insert ?
    le message d"erreur est:
    Aucune valeur donnée pour un ou plusieurs des paramètres requis.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonsoir,

    L'insert vous demande de donner des valeurs à note1 float , note2 float, moyenne float.

    Vérifiez dans Access, pour les champs concernés, que la propriété Null Interdit ne soit pas sur Oui.
    Si c'est sur oui, vous pouvez donner une valeur par défaut aux champs et il ne devrait plus vous embéter.
    Sinon, dans le requête d'insert, donnez lui tout les paramètres pour remplir tout les champs.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Par défaut
    Citation Envoyé par Rainui Voir le message
    Bonsoir,

    L'insert vous demande de donner des valeurs à note1 float , note2 float, moyenne float.

    Vérifiez dans Access, pour les champs concernés, que la propriété Null Interdit ne soit pas sur Oui.
    Si c'est sur oui, vous pouvez donner une valeur par défaut aux champs et il ne devrait plus vous embéter.
    Sinon, dans le requête d'insert, donnez lui tout les paramètres pour remplir tout les champs.
    la propriété Null Interdit des champs note1 float , note2 float, moyenne float est Non.
    J'ai au changé la reqête par celle-ci:
    CmdClasse.CommandText = "INSERT INTO ELEVES VALUES (TextBox1.Text, TextBox2.Text, TextBox3.Text, Val(TextBox4.Text), 0, 0, 0, 0, 0)"
    le même message persiste

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonsoir,

    Il semble qu'il y ai un problème d'écriture dans votre requête, essayez avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With _cmd
        .CommandType = CommandType.Text
        .CommandText = "INSERT INTO Elèves (NEleve, Nom, Prenom, Groupe) VALUES ('" & TextBox1.Text & "', '" & TextBox2.Text & "', '" & TextBox3.Text & "', '" & TextBox4.Text & "');"
        .Connection = _Con
    End With
    Ou :
    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
     
    Dim _cmd2 As New OleDbCommand
        With _cmd2
            .CommandType = CommandType.Text
            .CommandText = "INSERT INTO Elèves (NEleve, Nom, Prénom, Groupe) VALUES (@P1, @P2, @P3, @P4);"
            .Connection = _Con
            With .Parameters
                .Add("@P1", OleDbType.Char).Value = TextBox1.Text
                .Add("@P2", OleDbType.Char).Value = TextBox2.Text
                .Add("@P3", OleDbType.Char).Value = TextBox3.Text
                .Add("@P4", OleDbType.Decimal).Value = TextBox4.Text
            End With
        End With
        Try
            _Con.Open()
            _cmd2.ExecuteNonQuery()
            _Con.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Par défaut
    Citation Envoyé par Rainui Voir le message
    Bonsoir,

    Il semble qu'il y ai un problème d'écriture dans votre requête, essayez avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With _cmd
        .CommandType = CommandType.Text
        .CommandText = "INSERT INTO Elèves (NEleve, Nom, Prenom, Groupe) VALUES ('" & TextBox1.Text & "', '" & TextBox2.Text & "', '" & TextBox3.Text & "', '" & TextBox4.Text & "');"
        .Connection = _Con
    End With
    Ou :
    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
     
    Dim _cmd2 As New OleDbCommand
        With _cmd2
            .CommandType = CommandType.Text
            .CommandText = "INSERT INTO Elèves (NEleve, Nom, Prénom, Groupe) VALUES (@P1, @P2, @P3, @P4);"
            .Connection = _Con
            With .Parameters
                .Add("@P1", OleDbType.Char).Value = TextBox1.Text
                .Add("@P2", OleDbType.Char).Value = TextBox2.Text
                .Add("@P3", OleDbType.Char).Value = TextBox3.Text
                .Add("@P4", OleDbType.Decimal).Value = TextBox4.Text
            End With
        End With
        Try
            _Con.Open()
            _cmd2.ExecuteNonQuery()
            _Con.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    merci Rainui
    problème réglé
    RESOLU

  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
    Bonjour,

    Dans tous les cas il est préférable d'utiliser les requêtes paramètrées. Pour apprendre voir :Tuto ou Faq.
    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.

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

Discussions similaires

  1. [Débutant] Modifier un enregistrement - vb2010 acces 2007
    Par bucabuca dans le forum VB.NET
    Réponses: 8
    Dernier message: 28/05/2013, 19h51
  2. Specifier le chemin du fichier mdw sous acces 2007
    Par flying silver dans le forum Sécurité
    Réponses: 5
    Dernier message: 21/06/2007, 23h12
  3. Insérer un nouveau champs dans des requêtes
    Par antoine1504 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 21/06/2007, 08h47
  4. Acces 2007 plusieurs champs
    Par Marye dans le forum IHM
    Réponses: 12
    Dernier message: 16/03/2007, 22h55

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