1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2015
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Enregistrement d'un datatable dans Access

    Bonjour à tous,
    C'est la première fois que je poste une question sur ce forum. D'habitude, à force de chercher des solutions sur internet je trouve mon bonheur, mais là ... impossible.
    Voici mon problème :
    A l'ouverture de ma form, je charge 4 tables access dans mon DataSet :

    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
    Public Class Frm_Salarié_EtatCivil
        Private MaConnexionSalariés As New OleDbConnection
        Private MaCommandBuilderSalariés As New OleDbCommandBuilder
        Private MonDataAptaterSalariés As New OleDbDataAdapter
        Private MonDataSetSalariés As New DataSet
        Private sqlSalariés As String
     
        Private Sub Frm_Salarié_EtatCivil_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            'Alimente le nouveau DataSet avec les tables Tbl_Salariés, Tbl_Salariés_TitreSéjour, Ref_TitreSéjour et Tbl_Salariés_Agréments
            MaConnexionSalariés = New OleDbConnection(MaConnexionString)
            MaConnexionSalariés.Open()
     
            MaCommandBuilderSalariés = New OleDbCommandBuilder(MonDataAptaterSalariés)
            MonDataAptaterSalariés = New OleDbDataAdapter("SELECT * FROM Tbl_Salariés WHERE Id_Salarié=4", MaConnexionSalariés)
            MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Tbl_Salariés")
            MaCommandBuilderSalariés.RefreshSchema()
     
            MonDataAptaterSalariés = New OleDbDataAdapter("SELECT * FROM Tbl_Salariés_TitreSéjour WHERE Id_Salarié=4", MaConnexionSalariés)
            MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Tbl_Salariés_TitreSéjour")
            MaCommandBuilderSalariés.RefreshSchema()
            MonDataAptaterSalariés = New OleDbDataAdapter("SELECT * FROM Ref_TitreSéjour", MaConnexionSalariés)
            MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Ref_TitreSéjour")
            MaCommandBuilderSalariés.RefreshSchema()
     
            MonDataAptaterSalariés = New OleDbDataAdapter("SELECT * FROM Tbl_Salariés_Agréments WHERE Id_Salarié=4", MaConnexionSalariés)
            MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Tbl_Salariés_Agréments")
            MaCommandBuilderSalariés.RefreshSchema()
        End Sub
     
    'En cliquant sur un bouton, je veux qu'il m'ajoute une ligne dans la table Tbl_Salariés_TitreSéjour :
        Private Sub Btn_AjoutTitre_Click(sender As Object, e As EventArgs) Handles Btn_AjoutTitre.Click
                Dim cb As New OleDb.OleDbCommandBuilder(MonDataAptaterSalariés)
                Dim dr As DataRow = MonDataSetSalariés.Tables("Tbl_Salariés_TitreSéjour").NewRow
                dr("Id_TitreSéjour") = DMax("Id_TitreSéjour", "Tbl_Salariés_TitreSéjour") + 1
                dr("Id_Salarié") = 4
                dr("TitreSéjour_Type") = Form_TitreSéjour.Controls("Fld_TitreSéjour_Type").Text
                dr("TitreSéjour_Numéro") = Form_TitreSéjour.Controls("Fld_TitreSéjour_Numéro").Text
                dr("TitreSéjour_DateDébut") = Form_TitreSéjour.Controls("Fld_TitreSéjour_DateDébut").Text
                dr("TitreSéjour_DateFin") = Form_TitreSéjour.Controls("Fld_TitreSéjour_DateFin").Text
                MonDataSetSalariés.Tables("Tbl_Salariés_TitreSéjour").Rows.Add(dr)
                cb.GetUpdateCommand()
                MonDataAptaterSalariés.Update(MonDataSetSalariés, "Tbl_Salariés_TitreSéjour")
        End Sub
    End Class
    1ière question : Le click sur le bouton ajoute bien ma ligne dans ma Datatable mais pas dans Access
    2ième question : si j'ajoute la dernière ligne (MonDataAptaterSalariés.Update(MonDataSetSalariés, "Tbl_Salariés_TitreSéjour")), le debug bloque sur celle-ci en affichant le message "DataColumn 'Agrément_Numéro' manquant dans DataTable 'Tbl_Salariés_TitreSéjour' pour SourceColumn 'Agrément_Numéro'"
    Ce que je ne comprends pas c'est que 'Agrément_Numéro' ne fait pas partie de la Datatable "Tbl_Salariés_TitreSéjour" de mais de la Datatable "Tbl_Salariés_Agréments"

    Merci à vous de bien vouloir m'aider

  2. #2
    Membre averti Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    août 2014
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2014
    Messages : 193
    Points : 329
    Points
    329

    Par défaut

    Salut
    Après ton MonDataAptaterSalariés.Update tu dois faire un MonDataAptaterSalariés.Fill.

    Plus d'infos ici : https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    Merci de ainsi que d'utiliser les boutons et

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2015
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    Bonjour,
    Le problème c'est qu'il bloque sur la ligne : MonDataAptaterSalariés.Update(MonDataSetSalariés, "Tbl_Salariés_TitreSéjour") en me laissant le message d'erreur que j'ai mentionné. Il ne lira donc pas la ligne suivante...

  4. #4
    Membre averti Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    août 2014
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2014
    Messages : 193
    Points : 329
    Points
    329

    Par défaut

    Citation Envoyé par frankdelnatte Voir le message
    Bonjour à tous,
    2ième question : si j'ajoute la dernière ligne (MonDataAptaterSalariés.Update(MonDataSetSalariés, "Tbl_Salariés_TitreSéjour")), le debug bloque sur celle-ci en affichant le message "DataColumn 'Agrément_Numéro' manquant dans DataTable 'Tbl_Salariés_TitreSéjour' pour SourceColumn 'Agrément_Numéro'"
    Ce que je ne comprends pas c'est que 'Agrément_Numéro' ne fait pas partie de la Datatable "Tbl_Salariés_TitreSéjour" de mais de la Datatable "Tbl_Salariés_Agréments"
    Normal puisque que à chaque fois tu remplace ton datadapter. La dernière utilisation est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonDataAptaterSalariés = New OleDbDataAdapter("SELECT * FROM Tbl_Salariés_Agréments WHERE Id_Salarié=4", MaConnexionSalariés)
    MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Tbl_Salariés_Agréments")
    Merci de ainsi que d'utiliser les boutons et

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2015
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    J'ai suivi ton conseil,j'ai modifié ma procédure de chargement :

    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
            'Alimente le nouveau DataSet avec les tables Tbl_Salariés, Tbl_Salariés_TitreSéjour, Ref_TitreSéjour et Tbl_Salariés_Agréments
            MaConnexionSalariés = New OleDbConnection(MaConnexionString)
            MaConnexionSalariés.Open()
     
            MaCommandBuilderSalariés = New OleDbCommandBuilder(MonDataAptaterSalariés)
            MonDataAptaterSalariés = New OleDbDataAdapter("SELECT * FROM Tbl_Salariés WHERE Id_Salarié=4", MaConnexionSalariés)
            MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Tbl_Salariés")
            MaCommandBuilderSalariés.RefreshSchema()
     
            MonDataAptaterSalariés.SelectCommand.CommandText = ("SELECT * FROM Tbl_Salariés_TitreSéjour WHERE Id_Salarié=4")
            MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Tbl_Salariés_TitreSéjour")
            MaCommandBuilderSalariés.RefreshSchema()
            MonDataAptaterSalariés.SelectCommand.CommandText = ("SELECT * FROM Ref_TitreSéjour")
            MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Ref_TitreSéjour")
            MaCommandBuilderSalariés.RefreshSchema()
     
            MonDataAptaterSalariés.SelectCommand.CommandText = ("SELECT * FROM Tbl_Salariés_Agréments WHERE Id_Salarié=4")
            MonDataAptaterSalariés.Fill(MonDataSetSalariés, "Tbl_Salariés_Agréments")
            MaCommandBuilderSalariés.RefreshSchema()
    Malheureusement, le résultat est toujours le même : Blocage sur la ligne MonDataAptaterSalariés.Update(MonDataSetSalariés, "Tbl_Salariés_TitreSéjour") et même message d'erreur.
    C'est à n'y rien comprendre !
    J'ai fait une vérif pour voir si mes tables étaient bien enregistrées dans mon dataset, pas de prob, les champs sont corrects dans chaque datatable

  6. #6
    Membre averti Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    août 2014
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2014
    Messages : 193
    Points : 329
    Points
    329

    Par défaut

    Citation Envoyé par frankdelnatte Voir le message
    J'ai suivi ton conseil,j'ai modifié ma procédure de chargement
    En fait tu n'as pas compris.
    En gros tu fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MonDataAptaterSalariés = A
    MonDataAptaterSalariés = B
    MonDataAptaterSalariés = C
    Donc ta variable prend la dernière valeur donc C dans notre exemple
    Merci de ainsi que d'utiliser les boutons et

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2015
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    mais je n'ai pas le choix, pour intégrer mes 4 tables dans mon dataset. Comment faire autrement ? je dois créer 4 DataAdapter différents ?

    quelle serait ta solution ?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/05/2015, 01h38
  2. Enregistrement d'une dataTable dans ma BDD
    Par pools dans le forum Windows Forms
    Réponses: 0
    Dernier message: 28/05/2009, 21h15
  3. Réponses: 4
    Dernier message: 28/04/2006, 23h21
  4. [VB]Utilisé une requête enregistrée dans ACCESS
    Par anikeh dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/01/2006, 17h54
  5. Enregistrement trop long dans ACCESS (ALTER TABLE)
    Par Arrown dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/07/2004, 20h20

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