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 :

Remplir un Basse de donnée ( Access ) à l'aide d'un formulaire [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Analyse système
    Inscrit en
    Octobre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 8
    Par défaut Remplir un Basse de donnée ( Access ) à l'aide d'un formulaire
    Bonsoir, tout le monde,

    Cela fait plusieurs jour que je suis à la recherche d'une solution à mon problème .

    Je souhaite, grâce à un formulaire d'inscription, stocker des données renseignés par l'utilisateur dans ma base de donnée Access, pour cela j'ai donc crée un fomulaire d'inscription avec une connexion à ma base de donné mais je n'arrive pas à comprend comment stocké mes infos dans ma base

    j'ai trouvé "INSERT INTO MaTable VALUES (Nom, Prenom)", mais je ne sais pas comment l'utiliser.

    Voici 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Imports System.Data.OleDb
     
    Public Class Form2
        Dim Cn As New OleDbConnection
     
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data source=c:\users\khriss\documents\visual studio 2010\Projects\Gestion User\Gestion User\Utilisateur1.accdb"
            Cn.Open()
            MsgBox(" OK ", 0 + 46)
     
        End Sub
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            If TXT_NOM.Text = "" Or TXT_PRENOM.Text = "" Or TXT_MAIL.Text = "" Or CB_BAT.Text = "" Or TXT_SALLE.Text = "" Or CB_SERVICE.Text = "" Or TXT_MDP.Text = "" Or TXT_CONF.Text = "" Then
                MsgBox("Veuillez remplir tout le formulaire ")
                Exit Sub
     
                If TXT_MDP.Text <> TXT_CONF.Text Then
                    MsgBox(" Les mots de passe ne sont pas identique ")
                    Exit Sub
                End If
            End If
     
            Dim NomUSer As String = TXT_NOM.Text
            Dim PrenomUSer As String = TXT_PRENOM.Text
            Dim MAilUSer As String = TXT_MAIL.Text
            Dim ContactUser As String = TXT_CONTACT.Text
            Dim BatimentUser As String = CB_BAT.Text
            Dim SalleUser As String = TXT_SALLE.Text
            Dim ServiceUser As String = CB_SERVICE.Text
            Dim MDPUser As String = TXT_MDP.Text
            Dim ConfirmeMDP As String = TXT_CONF.Text
     
            ''souhaite stocker les infos dans ma base de donnée 
     
        End Sub
    End Class

    Merci d'avance pour vos réponses

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 40
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim sqlAdd as string="Insert Into MaTable(Ta Liste des Champs) values (Les Variables Correspondantes)"
    Dim Cmd as new oledb.OledbCommand(sqlAdd,Cn)
    cmd.ExecuteNonQuery
    cn.close

  3. #3
    Membre du Club
    Profil pro
    Analyse système
    Inscrit en
    Octobre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 8
    Par défaut
    Merci pour ta réponse aussi rapide,
    je sais pas si c'est moi, mais je pense ne pas avoir compris encore car maintenant quand je généré mon code , j'ai un message d'erreur syntaxe ligne 37

    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
    36
    37
    38
    39
    40
    41
    42
    43
     
    Imports System.Data.OleDb
     
    Public Class Form1
        Dim Cn As New OleDbConnection
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data source=c:\users\khriss\documents\visual studio 2010\Projects\Gestion User\Gestion User\Utilisateur1.accdb"
            Cn.Open()
            MsgBox(" OK ", 0 + 46)
     
        End Sub
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            If TXT_NOM.Text = "" Or TXT_PRENOM.Text = "" Or TXT_MAIL.Text = "" Or CB_BAT.Text = "" Or TXT_SALLE.Text = "" Or CB_SERVICE.Text = "" Or TXT_MDP.Text = "" Or TXT_CONF.Text = "" Then
                MsgBox("Veuillez remplir tout le formulaire ")
                Exit Sub
     
                If TXT_MDP.Text <> TXT_CONF.Text Then
                    MsgBox(" Les mots de passe ne sont pas identique ")
                    Exit Sub
                End If
            End If
     
            Dim Nom As String = TXT_NOM.Text
            Dim Prenom As String = TXT_PRENOM.Text
            Dim MAil As String = TXT_MAIL.Text
            Dim Contact As String = TXT_CONTACT.Text
            Dim Batiment As String = CB_BAT.Text
            Dim Salle As String = TXT_SALLE.Text
            Dim Service As String = CB_SERVICE.Text
            Dim MDPUser As String = TXT_MDP.Text
     
    erreur-->     Dim sqlAdd As String = "Insert Into Utilisateu (@Nom,@Prénom,@E-mail,@Contact,@Batiment,@Salle,@Service,@Mot de passe) values (Nom, Prenom, Mail, Contact, Batiment, Salle, Service ,MDPUser)"
            Dim Cmd As New OleDb.OleDbCommand(sqlAdd, Cn)
            Cmd.ExecuteNonQuery()
            Cn.Close()
     
        End Sub
    End Class

    Message d'erreur :
    Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans System.Data.dll

    Informations supplémentaires*: Erreur de syntaxe dans l'instruction INSERT INTO

  4. #4
    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 faut utiliser les requêtes paramètrées. Voir Tuto ou Faq.

    Les cours BDD
    Utiliser ADO.NET
    ADO.NET : les objet Connection, Command et Datareader
    ADO.NET : les objets DataAdapter et Dataset
    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.

  5. #5
    Membre du Club
    Profil pro
    Analyse système
    Inscrit en
    Octobre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 8
    Par défaut
    Merci ta réponse ( que je conserve ),

    Je pense que je me suis perdu dans le code ....

    je me retrouve donc avec ce code, j'ai plus de message d'erreur mais aucune info s'enregistre dans ma base

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
     
     
    Imports System.Data.OleDb
     
    Public Class Form1
        Dim Cn As New OleDbConnection
        Dim Configurationsettings As Object
     
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data source=c:\users\khriss\documents\visual studio 2010\Projects\Gestion User\Gestion User\Utilisateur1.accdb"
            Cn.Open()
            MsgBox(" État de la connexion : " & Cn.State, 0 + 46)
     
     
        End Sub
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            If TXT_NOM.Text = "" Or TXT_PRENOM.Text = "" Or TXT_MAIL.Text = "" Or CB_BAT.Text = "" Or TXT_SALLE.Text = "" Or CB_SERVICE.Text = "" Or TXT_MDP.Text = "" Or TXT_CONF.Text = "" Then
                MsgBox("Veuillez remplir tout le formulaire ")
                Exit Sub
     
                If TXT_MDP.Text <> TXT_CONF.Text Then
                    MsgBox(" Les mots de passe ne sont pas identique ")
                    Exit Sub
                End If
            End If
     
            Dim Nom As String = TXT_NOM.Text
            Dim Prenom As String = TXT_PRENOM.Text
            Dim MAil As String = TXT_MAIL.Text
            Dim Contact As String = TXT_CONTACT.Text
            Dim Batiment As String = CB_BAT.Text
            Dim Salle As String = TXT_SALLE.Text
            Dim Service As String = CB_SERVICE.Text
            Dim MDPUser As String = TXT_MDP.Text
     
            Dim MaConnexionOLEDB As OleDbConnection
            Dim MyCommande As OleDbCommand
            Dim MaRequete As String
     
            MaConnexionOLEDB = New OleDbConnection(Cn.ConnectionString)
     
            MaRequete = "INSERT INTO Utilisateu ([Nom], [Prénom], [E-mail] ,[Contact], [Batiment] ,[Salle],[Service], [Mot de passe]) VALUES (@Nom, @Prenom, @MAil, @Contact, @Batiment, @Salle, @Service ,@MDPUser)"
            MyCommande = New OleDbCommand(MaRequete, MaConnexionOLEDB)
     
     
            With MyCommande.Parameters
                .Add(New OleDbParameter("@Nom", OleDbType.VarChar, 20))
                .Add(New OleDbParameter("@Prénom", OleDbType.VarChar, 30))
                .Add(New OleDbParameter("@Mail", OleDbType.VarChar, 50))
                .Add(New OleDbParameter("@Contact", OleDbType.VarChar, 10))
                .Add(New OleDbParameter("@Batiment", OleDbType.VarChar, 20))
                .Add(New OleDbParameter("@Salle", OleDbType.VarChar, 20))
                .Add(New OleDbParameter("@Service", OleDbType.VarChar, 20))
                .Add(New OleDbParameter("@MDPuser", OleDbType.VarChar, 15))
     
            End With
     
            With MyCommande
                .Parameters("@Nom").Value = Me.TXT_NOM.Text
                .Parameters("@Prénom").Value = Me.TXT_PRENOM.Text
                .Parameters("@Mail").Value = Me.TXT_MAIL.Text
                .Parameters("@Contact").Value = Me.TXT_CONTACT.Text
                .Parameters("@Batiment").Value = Me.CB_BAT.Text
                .Parameters("@Salle").Value = Me.TXT_SALLE.Text
                .Parameters("@Service").Value = Me.CB_SERVICE.Text
                .Parameters("@MDPUser").Value = Me.TXT_MDP.Text
     
            End With
     
            Try
                MyCommande.Connection.Open()
                MyCommande.ExecuteNonQuery()
                MyCommande.Connection.Close()
            Catch ex As Exception
     
            End Try
     
            Cn.Close()
     
        End Sub
    End Class
    Merci d'avance

  6. #6
    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
    Citation Envoyé par krhiss Voir le message
    je me retrouve donc avec ce code, j'ai plus de message d'erreur mais aucune info s'enregistre dans ma base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Try
                MyCommande.Connection.Open()
                MyCommande.ExecuteNonQuery()
                MyCommande.Connection.Close()
            Catch ex As Exception
     
            End Try
    Et ou est l'affichage du message d'erreur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    Catch ex As Exception
                        MsgBox(ex.ToString)
    Citation Envoyé par krhiss Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            MaRequete = "INSERT INTO Utilisateu ('....
    Le nom de ta table ne serait pas Utilisateur ? (r absent)

    Access ne tient pas compte des noms
    Citation Envoyé par krhiss Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            MaRequete = "INSERT INTO Utilisateu ([Nom], [Prénom], [E-mail] ,[Contact], [Batiment] ,[Salle],[Service], [Mot de passe]) VALUES (@Nom, @Prenom, @MAil, @Contact, @Batiment, @Salle, @Service ,@MDPUser)"
    tu peux écrire ta requête ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Dim MaRequete As String = "INSERT INTO Utilisateur ([Nom], [Prénom], [E-mail] ,[Contact], [Batiment] ,[Salle],[Service], [Mot de passe]) VALUES (?,?,?,?,?,?,?,?)"
    Par contre l'ordre est important, ne le change pas dans les paramètres.
    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.

  7. #7
    Membre émérite

    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
    Par défaut
    Salut

    je me retrouve donc avec ce code, j'ai plus de message d'erreur mais aucune info s'enregistre dans ma base
    es tu sure ?
    chez moi ton code marche

    déja tu peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With MyCommande.Parameters
                .Add(New OleDbParameter("@Nom", OleDbType.VarChar, 20)).Value = Me.TXT_NOM.Text
                .Add(New OleDbParameter("@Prénom", OleDbType.VarChar, 30)).Value = Me.TXT_PRENOM.Text
                .Add(New OleDbParameter("@Mail", OleDbType.VarChar, 50)).Value = Me.TXT_MAIL.Text
                .Add(New OleDbParameter("@Contact", OleDbType.VarChar, 10)).Value = Me.TXT_CONTACT.Text
                .Add(New OleDbParameter("@Batiment", OleDbType.VarChar, 20)).Value = Me.CB_BAT.Text
                .Add(New OleDbParameter("@Salle", OleDbType.VarChar, 20)).Value = Me.TXT_SALLE.Text
                .Add(New OleDbParameter("@Service", OleDbType.VarChar, 20)).Value = Me.CB_SERVICE.Text
                .Add(New OleDbParameter("@MDPuser", OleDbType.VarChar, 15)).Value = Me.TXT_MDP.Text
     
            End With
    et aussi pour déclarer deux connections ?
    Dim Cn As New OleDbConnection
    et dans le button1_click
    Dim MaConnexionOLEDB As OleDbConnection ?

    sers toi de cn directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MyCommande = New OleDbCommand(MaRequete, cn)  
       Try
                MyCommande.ExecuteNonQuery()
     
            Catch ex As Exception
             MessageBox.Show(ex.Message)
            End Try
     
            Cn.Close()
    tes variables
    Dim Nom As String = TXT_NOM.Text
    Dim Prenom As String = TXT_PRENOM.Text
    Dim MAil etc
    ne servent pas

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

Discussions similaires

  1. [Débutant] Remplir une base de données ACCESS à partir des textBox
    Par strafor dans le forum VB.NET
    Réponses: 6
    Dernier message: 17/11/2013, 01h54
  2. Remplir Combobox Avec des données Access
    Par hackman61 dans le forum VB.NET
    Réponses: 1
    Dernier message: 23/03/2011, 18h01
  3. remplir une base de données Access
    Par fishingman dans le forum VB.NET
    Réponses: 6
    Dernier message: 13/03/2010, 19h13
  4. [AC-2010] Création d'une basse de donnée access
    Par XGuarden dans le forum Modélisation
    Réponses: 1
    Dernier message: 15/12/2009, 18h37
  5. Comment remplir une base de donnée Access ?
    Par k_boy dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/12/2007, 22h56

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