Bonjour,
Problème on ne peut plus classique :
- Une Form avec des Textbox bindés sur une table maître (ça , ça roule)
- Un Datagrid view qui Bind les enfants des données maîtres : ça semble rouler aussi.
Le souci, que la source de données SQL enregistre les modifications enfants du Datagridview, et notamment les inserts qui ont besoin de champs cachés enfants, nécessaires pour le modèle relationnel enfants --> Parent.
1) LECTURE
Mon code actuel...
Chargement des données, une fois la connexion établie (Load de la Form):
Le lien se fait donc sur une données 'code' : idMaitre. elle conserve la valeur active de l'enregistrement maître. L'affichage du datagridview se fait juste via un filtre du Datagridview (ça, ça me gêne quelque part que je doive utiliser un filtre pour respecter un modèle relationnel)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 StrSql = "Select TCLIENTS_CONTACTS.* From TCLIENTS_CONTACTS order by CCO_NOM Where CCO_IDCLI='" & IdMaitre & "';" ObjetCommand = New SqlCommand(StrSql) ObjetDataAdapter = New SqlDataAdapter(ObjetCommand) ObjetCommand.Connection() = ObjetConnection ObjetDataAdapter.Fill(ObjetDataset, "TCLIENTS_CONTACTS") ObjetDataTable = ObjetDataset.Tables("TCLIENTS_CONTACTS") MasterTemplate.DataSource = ObjetDataTable
Le Filtre :
Je récupère une valeur bindée en TextBox (TXT0 / Nom neutre pour pouvoir réutiliser facilement le code sur une autre form) de l'enregistrement maître, j'efface le filtre courant et je remet le bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 If TXT0.Text Then IdMaitre = TXT0.Text MasterTemplate.FilterDescriptors.Clear() MasterTemplate.FilterDescriptors.Add(New FilterDescriptor("CCO_IDCLI", FilterOperator.IsEqualTo, IdMaitre))
2) MAJ du Datagrid
Je laisse l'UI du Databind opérer, çà roule à l'écran, en changeant d'enregistrement maître, les modifications sont conservées. Le propriétés du Datagrid semblent donc ok.
en Mise à jour :
- Les update sont corrects
- Les delete sont corrects.
- Les insert ne sont pas visibles : Cause probable, la clé étrangère de l'enfant non renseignée (cachée et ne devant pas être saisie) ne lie pas l'enfant au parent : problème d'adoption à gérer.
3) Validation finale via un Bouton.
J'ai tenté plusieurs syntaxes. En vain.
La dernière :
ramène l'erreur : Impossible pour Update de trouver TableMapping['Table'] ou DataTable 'Table'."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ObjetDataAdapter.Update(ObjetDataset)
L'enfant ne peut donc pas grandir...
Donc deux soucis d'enfants pour le père de famille que je suis...
Des conseils?
Un bon tuto raté????
Partager