Bonjour,
Je n'arrive pas à update deux tables liées.
J'utilise un dataset:
Dimensionnement des variables:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    Dim con As New OleDbConnection
    Dim cmd As OleDbCommand
    Dim dr As OleDbDataReader
    Dim da_chant, da_paroles As New OleDbDataAdapter
    Dim dt As New DataTable
    Dim ds As New DataSet
    Dim Chant_BindingSource As New BindingSource
    Dim Paroles_BindingSource As New BindingSource
Voici mon code de départ:
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
           If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\Chants.mdb") Then
                con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & My.Application.Info.DirectoryPath & "\Chants.mdb"
            Else
                MsgBox("Connection à chants.mdb impossible !" & Chr(13) & "Fichier introuvable à l'emplacement:" & Chr(13) & My.Application.Info.DirectoryPath, MsgBoxStyle.Critical)
            End If
 
            Dim sql_chant As String
            Dim sql_paroles As String
 
            sql_chant = "SELECT * FROM T_Chant"
 
            cmd = New OleDbCommand(sql_chant, con)
            cmd.Connection.Open()
            da_chant.SelectCommand = cmd
            da_chant.Fill(ds, "T_Chant")
 
            sql_paroles = "SELECT * FROM T_Paroles"
            cmd = New OleDbCommand(sql_paroles, con)
            da_paroles.SelectCommand = cmd
            da_paroles.Fill(ds, "T_Paroles")
            cmd.Connection.Close()
 
            Dim relation As DataRelation
            Dim T_ChantColumn As DataColumn
            Dim T_ParolesColumn As DataColumn
 
            T_ChantColumn = ds.Tables("T_chant").Columns("ref")
            T_ParolesColumn = ds.Tables("T_Paroles").Columns("n°")
 
            relation = New DataRelation("relation", T_ChantColumn, T_ParolesColumn)
 
            ds.Relations.Add(relation)
 
            Chant_BindingSource.DataSource = ds
            Chant_BindingSource.DataMember = "T_chant"
 
            Paroles_BindingSource.DataSource = Chant_BindingSource
            Paroles_BindingSource.DataMember = "relation"
Mon code lors de l'ajout d'un nouvel enregistrement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
             Dim titre As String = InputBox("Titre du chant:", "Titre")
            If titre = "" Then
                Mode_Lecture()
            Else
 
                Chant_BindingSource.AddNew()
                TextBox_Titre.Text = titre
                Paroles_BindingSource.MoveLast()
 
            End If
Et mon code d'enregistrement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
            Chant_BindingSource.EndEdit()
            Paroles_BindingSource.EndEdit()
 
            Dim cb_chant As New OleDbCommandBuilder(da_chant)
            Dim cb_paroles As New OleDbCommandBuilder(da_paroles)
 
            da_chant.Update(ds, "T_chant")
            da_paroles.Update(ds, "T_paroles")
 
            ds.Clear()
            da_chant.Fill(ds, "T_chant")
            da_paroles.Fill(ds, "T_Paroles")
Ce code fonctionne partiellement. Les enregistrements sont bien dans la table, mais ne sont pas liées.
Ainsi, lors d'un ajout, les clés primaires dans le dataset sont vides. De plus le champ "n°" sur lequel j'ai fait la liaison ne se remplit pas !
Lors de la visualisation, je peux voir le nouvel enregistrement mais pas les enregistrements enfants liés puisque le champ "n°" est vide !

Aidez moi SVP, je galère sur ceci depuis plusieurs mois sans trouver de solution !!!

Merci !