Bonjour à tous
J'ai un petit souci (sinon, je n'écrirais pas ici )
J'ai une base qui contient une table Contacts, une table Adresses et une table faisant la liaison entre les 2:
Table T_CONTACTS CONT_ID : clé primaire
Données...
Table T_ADRESSES ADR_ID : clé primaire
Données...
Table T_CONTACTS_ADRESSES CONT_ID,
ADR_ID
A première vue, rien de difficile, cette structure me permet évidemment de pouvoir lier plusieurs adresses à un contact.
Afin de pouvoir modifier les adresses d'un contact, j'ai ajouté un TSQLQuery, un TDataSetprovider, un TClientDataSet et un TDataSource.
J'ai créé une vue de cette façon:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
SELECT
CA.ADR_ID,
CA.CONT_ID,
A.ADR_ADRESSE1,
A.ADR_ADRESSE2,
A.etc...
FROM
T_CONTACTS_ADRESSES CA
JOIN
T_ADRESSES A
ON
CA.ADR_ID = A.ADR_ID; |
De cette façon, je peux afficher les adresses liées à un contact.
Seulement, si je veux lier une adresse existante au contact, je n'ai théoriquement qu'à ajouter une ligne dans la table T_CONTACTS_ADRESSES avec les PK qui vont bien, la suite de la vue devrait s'afficher directement puisque directement issue de T_ADRESSES.
Or, si je n'ajoute que CONT_ID et ADR_ID, le reste ne s'affiche pas:
1 2 3 4 5
|
ClientDataSet4.Append;
ClientDataSet4ADR_ID.Value := anAdresse.ID;
ClientDataSet4CONT_ID.Value := FContactID;
ClientDataSet4.Post; |
Donc je me pose 2 questions:
- la méthode Append ajoute une nouvelle ligne uniquement sur la table T_CONTACTS_ADRESSES ou sur T_ADRESSES aussi ?
- Comment ajouter simplement cette liaison et faire en sorte qu'elle s'affiche directement sans appliquer les changements (ApplyUpdates) pour éventuellement annuler les changements ?
Merci d'avance
Partager