Bonjour,
Je n'arrive pas à update deux tables liées.
J'utilise un dataset:
Dimensionnement des variables:
Voici mon code de départ:
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
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
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"
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 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
Ce code fonctionne partiellement. Les enregistrements sont bien dans la table, mais ne sont pas liées.
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")
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 !
Partager