J'ai une construction de formulaire de deux-listbox classique (Déplacez une ligne de cette boîte à cette boîte ...) Je veux que la boîte à gauche contienne toutes les lignes qui ne sont pas dans la boîte sur la droite.Join - NOT (A2007)
Les données sous-jacentes sont dans une relation plusieurs-à-plusieurs. PartNbr - XREF - Source, où une partie peut avoir 0 ou plusieurs sources ... donc j'ai trois tables, Item Master, XREF et Source (alias "TP"). La boîte de droite sélectionne tous les partnbres du Item Master qui ont des enregistrements dans la table XREF, et les affiche dans la boîte de droite.
La boîte de gauche doit montrer toutes les autres parties du maître d'article TP (tierce partie) (parties Sourcable) qui ne sont PAS dans la boîte de droite. Comme c'est une relation plusieurs-à-plusieurs, j'ai utilisé la construction SELECT DISTINCT. Ci-joint les rowsources pour les deux boîtes:
gauche ("From") case:
SELECT DISTINCT tblTPitemMaster.TPItemID,
tblTPitemMaster.TPItemVendorID,
tblTPitemMaster.TPItemNbr, tblTPitemMaster.TPItemDescription,
tblTPitemMaster.TPItemUnitCost, tblXrefItemTPItem.TPXRCPASItemID
FROM tblTPitemMaster
LEFT JOIN tblXrefItemTPItem
ON tblTPitemMaster.TPItemID = tblXrefItemTPItem.TPXRTPItemID
WHERE ((TPItemVendorID=590) AND (TPXRCPASItemID <> 10546))
ORDER BY tblTPitemMaster.TPItemVendorID
droit ("A") Box:
SELECT tblXrefItemTPItem.TPXRPreferredVendor AS Rank,
tblVendor.[Vendor Name], tblTPitemMaster.TPItemNbr,
tblTPitemMaster.TPItemDescription, tblTPitemMaster.TPItemUnitCost,
tblXrefItemTPItem.TPXRID
FROM tblVendor INNER JOIN (tblTPitemMaster
INNER JOIN tblXrefItemTPItem
ON tblTPitemMaster.TPItemID = tblXrefItemTPItem.TPXRTPItemID)
ON tblVendor.ID = tblTPitemMaster.TPItemVendorID
WHERE TPXRCPASItemID=10546
ORDER BY tblXrefItemTPItem.TPXRPreferredVendor
Le problème est, je reçois tous les maîtres TPItem enregistrer dans la case de gauche. Doit être quelque chose de simple. Des idées?
Jim
Bien sûr, j'ai utilisé le moteur de requête d'Access pour produire le SQL, c'est pourquoi la verbosité. Vous avez raison à propos de l'alias. Je vais essayer votre suggestion après une tasse ou deux de café. Je vous remercie! –
OK, le problème est que l'élément doit être soit pas dans la table de jonction OU Dans la table de jonction et non lié à l'ID CPASItemID. Un ID CPASItem peut avoir plusieurs identificateurs TPItemID et un identificateur TPItemID peut avoir plusieurs identificateurs CPASItemID. ET le vendeur doit être 590. –