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 :

Enregistrement d'un datatable dans Access [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du 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
    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 chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    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

  3. #3
    Futur Membre du 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
    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 chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    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")

  5. #5
    Futur Membre du 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
    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 chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    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

  7. #7
    Futur Membre du 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
    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