edwinzap
Messages postés149Date d'inscriptionsamedi 29 septembre 2012StatutMembreDernière intervention21 juin 2016
-
24 févr. 2014 à 13:18
edwinzap
Messages postés149Date d'inscriptionsamedi 29 septembre 2012StatutMembreDernière intervention21 juin 2016
-
20 mars 2014 à 09:20
Bonjour,
Je n'arrive pas à update deux tables liées.
J'utilise un dataset:
Dimensionnement des variables:
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:
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:
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:
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 !!!