none
Enrégistrement dans une base de données access via un dataset RRS feed

  • Question

  • Bonjour à tous !

    Je désir faire des enrégistrements dans une de données access, via un dataset.

    Je dévéloppe en vb.net 2005, sous xp

    J'ai créer un formulaire sur lequel j'ai des texboxs et un datagriedview.

    Lors des saisies dans les textbox, les données s'affichent normalement dans le datagriedview, mais lors du click sur le bouton ''BtnEnrégistrer'' les données disparaissent du datagriview et rien ne rentre ni dans le dataset, ni dans la bdd.

    Aurriez-vous des ramarques à refaire sur la procédure "NouvelleLigne" ?

    Merci à tous les développeurs sur ce merveilleux forum !

    Private

    Sub BtnEnregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEnregistrer.Click

    Private

    Sub NouvelleLigne()

    ' me.BDD_MIGSI_DSet.Enseignants.AddEnseignantsRow()

    varId = TxtCodeEnsg.Text

    varNom = TxtNom.Text

    varPrnom = TxtPrenom.Text

    varAdress = TxtAdresse.Text

    VarPhone = TxtPhone.Text

    varEmail = TxtEmail.Text

    'InsertCommand

    Me.OleDbCnct.Open()

    Me.OleDbDtAdapter.InsertCommand.Parameters("CodeEnsg").Value = varId

    Me.OleDbDtAdapter.InsertCommand.Parameters("NomEnsg").Value = varNom

    Me.OleDbDtAdapter.InsertCommand.Parameters("PrnomEnsg").Value = varPrnom

    Me.OleDbDtAdapter.InsertCommand.Parameters("Adresse").Value = varAdress

    Me.OleDbDtAdapter.InsertCommand.Parameters("Telephone").Value = VarPhone

    Me.OleDbDtAdapter.InsertCommand.Parameters("Email").Value = varEmail

    Me.OleDbCmd.ExecuteNonQuery()

    Me.OleDbCmd.Parameters.Add("CodeEnsg", OleDbType.WChar, 10, "CodeEnsg")

    Me.OleDbCmd.Parameters.Add("NomEnsg", OleDbType.WChar, 30, "NomEnsg")

    Me.OleDbCmd.Parameters.Add("PrnomEnsg", OleDbType.WChar, 30, "PrnomEnsg")

    Me.OleDbCmd.Parameters.Add("Adresse", OleDbType.WChar, 25, "Adresse")

    Me.OleDbCmd.Parameters.Add("Telephone", OleDbType.Integer, 25, "Telephone")

    Me.OleDbCmd.Parameters.Add("Email", OleDbType.WChar, 25, "Email")

    Me.OleDbDtAdapter.InsertCommand = OleDbCmd

    Try

    Me.OleDbDtAdapter.Update(Me.BDD_MIGSI_DSet.Enseignants)

    Catch ex As Exception

    End Try

    Me.BDD_MIGSI_DSet.Tables("Enseignants").AcceptChanges()

    'Me.DtGrid_Ensg.DataSource =

    Me.BDD_MIGSI_DSet.Clear()

    Me.BDD_MIGSI_DSet.Tables("Enseignants").BeginInit()

    Me.OleDbDtAdapter.Fill(Me.BDD_MIGSI_DSet.Enseignants)

    Me.OleDbCnct.Close()

    End Sub

    MsgBox(

    "voullez-vous enrgistrement cette mise jour", MsgBoxStyle.Question)

    Call NouvelleLigne()

    BtnAjout.Enabled =

    True

    End Sub


    Thibaut MOUELE

    mercredi 24 octobre 2012 18:30

Réponses

  • Bonjour,

    Vous avez déjà posé la question dans le thread suivant :

    http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/c8bf3a4d-daaf-4189-a27f-96d65f93d811

    Merci de lire les réponses proposées et indiquer si le problème est résolu ou non pour faire évoluer le fil.

    Merci de ne pas recréer un nouveau thread avec le même problème.

     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !

    • Proposé comme réponse Aurel Bera vendredi 26 octobre 2012 08:25
    • Marqué comme réponse Aurel Bera vendredi 26 octobre 2012 13:31
    mercredi 24 octobre 2012 23:03
  • Bonjour,

    voici une technique pour une application

    certains objets ont été déclaré en private en dessous de la classe

     Private AdapterPaye As New OleDbDataAdapter
     Private bindingemploy As New BindingSource

    Private SetPaye As New DataSet

    Private ConnPaye As New OleDbConnection

     Private CommandBuilderPaye As OleDbCommandBuilder

     ' La Source de la Base de données = Chemin de l'application + le dossier "Donnees" + le nom de la Base (Ici "Employes.EMP")

            Dim StrDB As String = Application.StartupPath & "\DosEmp\Employe.EMP"

            ' Ouverture de la connection Paye
            CmdPaye = New OleDbCommand("SELECT * FROM present ORDER BY Nom")

            'Instancier l'objet commande avec l'objet connection défini plus haut et initialisé
            ConnPaye = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" _
            & "Data Source=" & StrDB)
            ConnPaye.Open()
            CmdPaye.Connection = ConnPaye

            ' Ouverture du DataAdapter         ' Ici définition du SelectCommand       ' ce qui évite de le reprendre dans les autres procedures
            AdapterPaye.SelectCommand = CmdPaye
            ' Remplir le DataSet
            AdapterPaye.Fill(SetPaye, "present")
            bindingemploy.DataSource = SetPaye.Tables("present")

    'Pour emplir une liste

            ListBox1.DataSource = bindingemploy
            ListBox1.DisplayMember = "Nom"

    pour lier des textbox et des labels

     Label13.DataBindings.Add(New System.Windows.Forms.Binding("Text", bindingemploy, "Unite", True))

    'le terme Unite est le champ de base de donnée

            nomdulabel11.DataBindings.Add(New System.Windows.Forms.Binding("Text", bindingemploy, "T1", True))

    'le terme T1 est le champ de base de donnée

            nomdutextbox.DataBindings.Add(New System.Windows.Forms.Binding("Text", bindingemploy, "T2", True))

    Toutes les lignes avec une ' sont des infos

    ' Pour se délacer

    bindingemploy.MoveNext(),  .....Moveprévious(),

    ' Pour ajouter un nouveau

      bindingemploy.AddNew()

    ' Pour enregistrer

    bindingemploy.EndEdit()
            CommandBuilderPaye = New OleDbCommandBuilder(AdapterPaye)
            CommandBuilderPaye.DataAdapter.SelectCommand = CmdPaye
            CommandBuilderPaye.GetUpdateCommand()
            AdapterPaye.Update(SetPaye.Tables("present"))

    ' present est le nom de la table

    Normalement tout ce code est complet.

    Bon courage

    a votre disposition si besoin de + d'explications

    Jacky


    Jbenon

    • Proposé comme réponse Aurel Bera vendredi 26 octobre 2012 08:24
    • Marqué comme réponse Aurel Bera vendredi 26 octobre 2012 13:31
    jeudi 25 octobre 2012 20:57
  • Bonjour,


    J'ai une application en cours de développement dont les appels de base de données fonctionnent ainsi, il me reste à ajouter la gestion d'erreurs

    en cas de problèmes avec les fichiers.

    Jacky


    Jbenon

    Bonjour,

    Utilisez :

    Try
       'Votre code de traitement en base
    Catch ex as Exception
       'message d'erreur à afficher
       MesageBox.Show(ex.Message)
    End Try

    Vous avez la possibilité d'imbriquer les Catch en fonction des besoins. Exemple :

    Try
       'Votre code de traitement en base
    Catch ex as Exception
       'message d'erreur à afficher
       MesageBox.Show(ex.Message)
    Catch ioEx as IOException
       'Message d'erreur d'accès fichier
       MessageBox.Show(ioEx.Message)
    End Try
     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !

    • Proposé comme réponse jacallierjacky vendredi 26 octobre 2012 09:44
    • Marqué comme réponse Aurel Bera vendredi 26 octobre 2012 13:31
    vendredi 26 octobre 2012 09:16

Toutes les réponses

  • Bonjour,

    Vous avez déjà posé la question dans le thread suivant :

    http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/c8bf3a4d-daaf-4189-a27f-96d65f93d811

    Merci de lire les réponses proposées et indiquer si le problème est résolu ou non pour faire évoluer le fil.

    Merci de ne pas recréer un nouveau thread avec le même problème.

     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !

    • Proposé comme réponse Aurel Bera vendredi 26 octobre 2012 08:25
    • Marqué comme réponse Aurel Bera vendredi 26 octobre 2012 13:31
    mercredi 24 octobre 2012 23:03
  • Bonjour,

    voici une technique pour une application

    certains objets ont été déclaré en private en dessous de la classe

     Private AdapterPaye As New OleDbDataAdapter
     Private bindingemploy As New BindingSource

    Private SetPaye As New DataSet

    Private ConnPaye As New OleDbConnection

     Private CommandBuilderPaye As OleDbCommandBuilder

     ' La Source de la Base de données = Chemin de l'application + le dossier "Donnees" + le nom de la Base (Ici "Employes.EMP")

            Dim StrDB As String = Application.StartupPath & "\DosEmp\Employe.EMP"

            ' Ouverture de la connection Paye
            CmdPaye = New OleDbCommand("SELECT * FROM present ORDER BY Nom")

            'Instancier l'objet commande avec l'objet connection défini plus haut et initialisé
            ConnPaye = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" _
            & "Data Source=" & StrDB)
            ConnPaye.Open()
            CmdPaye.Connection = ConnPaye

            ' Ouverture du DataAdapter         ' Ici définition du SelectCommand       ' ce qui évite de le reprendre dans les autres procedures
            AdapterPaye.SelectCommand = CmdPaye
            ' Remplir le DataSet
            AdapterPaye.Fill(SetPaye, "present")
            bindingemploy.DataSource = SetPaye.Tables("present")

    'Pour emplir une liste

            ListBox1.DataSource = bindingemploy
            ListBox1.DisplayMember = "Nom"

    pour lier des textbox et des labels

     Label13.DataBindings.Add(New System.Windows.Forms.Binding("Text", bindingemploy, "Unite", True))

    'le terme Unite est le champ de base de donnée

            nomdulabel11.DataBindings.Add(New System.Windows.Forms.Binding("Text", bindingemploy, "T1", True))

    'le terme T1 est le champ de base de donnée

            nomdutextbox.DataBindings.Add(New System.Windows.Forms.Binding("Text", bindingemploy, "T2", True))

    Toutes les lignes avec une ' sont des infos

    ' Pour se délacer

    bindingemploy.MoveNext(),  .....Moveprévious(),

    ' Pour ajouter un nouveau

      bindingemploy.AddNew()

    ' Pour enregistrer

    bindingemploy.EndEdit()
            CommandBuilderPaye = New OleDbCommandBuilder(AdapterPaye)
            CommandBuilderPaye.DataAdapter.SelectCommand = CmdPaye
            CommandBuilderPaye.GetUpdateCommand()
            AdapterPaye.Update(SetPaye.Tables("present"))

    ' present est le nom de la table

    Normalement tout ce code est complet.

    Bon courage

    a votre disposition si besoin de + d'explications

    Jacky


    Jbenon

    • Proposé comme réponse Aurel Bera vendredi 26 octobre 2012 08:24
    • Marqué comme réponse Aurel Bera vendredi 26 octobre 2012 13:31
    jeudi 25 octobre 2012 20:57
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    • Proposé comme réponse jacallierjacky vendredi 26 octobre 2012 08:22
    • Non proposé comme réponse Aurel Bera vendredi 26 octobre 2012 08:24
    vendredi 26 octobre 2012 08:18
  • Bonjour,


    J'ai une application en cours de développement dont les appels de base de données fonctionnent ainsi, il me reste à ajouter la gestion d'erreurs

    en cas de problèmes avec les fichiers.

    Jacky


    Jbenon

    vendredi 26 octobre 2012 08:26
  • Bonjour,


    J'ai une application en cours de développement dont les appels de base de données fonctionnent ainsi, il me reste à ajouter la gestion d'erreurs

    en cas de problèmes avec les fichiers.

    Jacky


    Jbenon

    Bonjour,

    Utilisez :

    Try
       'Votre code de traitement en base
    Catch ex as Exception
       'message d'erreur à afficher
       MesageBox.Show(ex.Message)
    End Try

    Vous avez la possibilité d'imbriquer les Catch en fonction des besoins. Exemple :

    Try
       'Votre code de traitement en base
    Catch ex as Exception
       'message d'erreur à afficher
       MesageBox.Show(ex.Message)
    Catch ioEx as IOException
       'Message d'erreur d'accès fichier
       MessageBox.Show(ioEx.Message)
    End Try
     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !

    • Proposé comme réponse jacallierjacky vendredi 26 octobre 2012 09:44
    • Marqué comme réponse Aurel Bera vendredi 26 octobre 2012 13:31
    vendredi 26 octobre 2012 09:16
  • Bonjour,

    Pouvons-nous considérer que vous avez résolu votre problème avec les scénarios proposés ? Dans l'affirmative, pourriez-vous partager avec nous la solution, afin que d'autres personnes avec le même problème puissent profiter de cette solution ?

    Désormais, nous marquons les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci !

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 26 octobre 2012 13:31