Problème avec relation maitre détail

Signaler
Messages postés
265
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
5 mai 2015
-
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
Bonjour,
j'ai un souci avec une relation maitre/detail.

J'ai une table Professionnels (tblPro) avec id_pro comme index et une table des contacts des professionnels (tblContatcs) avec id_pro comme relation avec la table professionnels.

Dans un ModuleData , sur la table tblcontacts j'ai créé une relation avec:

Master source: tblPro (La table Professionnels)
Masterfields: id_pro de la table tbl(Pro)
IndexFieldname: id_pro de la table tblContatcs.

Cette relation fonctionne bien dans un formulaire. J'ai bien les contacts de chaque professionnel.

Cependant, j'ai besoin d'afficher, dans une autre fiche,  l'ensembles des contacts quelque soit le professionnel. Et là, je n'y arrive pas car la relation existe toujours.

J'ai essayé avec un ADOQuery sur la table tblContacts mais la relation subsiste toujours.

J'utilse ADO, D7 et une base access 2000.

En espérant avoir été clair.
Comment je peux m'y prendre?

D'avance merci.

Cordialement

Codial

<!-- / message -->

3 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Bonjour Codial,

Peux-tu fournir ta requête opérant sur la table tblContacts ?
N'utiliserais-tu pas, dans ta requête, de champs paramétrés faisant au champ Id_pro de la table tblPro ?

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
265
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
5 mai 2015
1
Bonjour Delphiprog,


Ma requête "



SELECT tbl_PRO.Nom_Societe, *

FROM tbl_PRO

INNER JOIN tbl_Contact_Pro ON tbl_PRO.id_PRO = tbl_Contact_Pro.id_Pro

ORDER BY tbl_Contact_Pro.Nom_Contact;

j'avais mis l'ADOQuery sur le DataModule avec le problème que l'on connait. En cherchant le pourquoi du comment j'ai mis cet ADOQuery sur ma fiche contacts, avec la connection sur l'ADOConnection, et ça marche!!!! Pourquoi, je ne sais pas!

Apparemment sur le DataModule, l'ADOQuery garde le master source de la tblContacts at pas sur la fiche ???




Par ailleurs je me suis aperçu qu'avec une requête paramétrée, sous Delphi, on ne peut pas utiliser ORDER BY, sinon il ne reconnait pas le parametre, curieux ??




Cordialement






 



Codial






 



 
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
SELECT tbl_PRO.Nom_Societe, *
FROM tbl_PRO

INNER JOIN tbl_Contact_Pro ON tbl_PRO.id_PRO = tbl_Contact_Pro.id_Pro
ORDER BY tbl_Contact_Pro.Nom_Contact;

Que tu ne récupères pas tous les enregistrements de la table tbl_contact_pro est normal. En effectuant une jointure interne (inner join), seuls les enregistrements de la table tbl_pro ayant des contacts seront listés.

Je ferai remarquer que dans les champs retournés par l'utilisation de "*" le champ Nom_Societe est déjà inclus.
Pour récupérer l'ensemble des contacts quelque soit le professionnel, une simple requête :
SELECT * FROM tbl_contacts_pro
devrait suffire, non ?

Apparemment sur le DataModule, l'ADOQuery garde le master source de la tblContacts et pas sur la fiche ???
Dans la requête ci-dessus, tu n'as pas besoin d'affecter la propriété MasterSource puisque la jointure est réalisée dans la requête SQL.

Par ailleurs je me suis aperçu qu'avec une requête paramétrée, sous Delphi, on ne peut pas utiliser ORDER BY, sinon il ne reconnait pas le parametre, curieux ??
Voilà une révélation intéressante. Je n'avais jamais remarqué mais il faut dire que je ne l'ai jamais essayé. J'avoue que ça ne me serait même pas venu à l'idée.

May Delphi be with you !
<hr color ="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.