Subformulier koppelen aan de moeder op basis van 2 sleutelvelden. Kan dat?

Status
Niet open voor verdere reacties.

CoenEnAccess

Gebruiker
Lid geworden
7 jun 2016
Berichten
44
ik heb een subformulier waarin 2 sleutelvelden zijn opgenomen: BronPartijID en DoelPartijID

Het hoofdformulier toont de partij.

Ik wil in het subformulier alle records opnemen waarvan de sleutel in het hoofdformulier (PartijID) overeekomt met de verwijzende sleutels in het subformulier, dus OF BronPartijID OF DoelPartijID.

De koppeling is nu dus
"hoofdvelden koppelen" : PartijID
"subvelden koppelen" BronPartijID.

en dit moet worden (iets zoals):
"subvelden koppelen" : BronpartijID OF DoelPartijID.

is zoiets mogelijk?
 
Simpel antwoord: nee. Je kunt best koppelen op één van de twee velden, maar ik neem aan dat BronpartijID en DoelPartijID beiden voorkomen in het hoofdformulier, en dat je maar één veld ziet op het hoofdformulier. In dit geval zou ik er toch 2 subformulieren van maken. Of, wellicht ook nog een oplossing, maar eerst een UNION query waarbij je een nieuw veld [PartijID] maakt waarin je in de eerste UNION variant de BronpartijID (en de rest van de velden natuurlijk) toevoegt aan [PartijID] en in de tweede UNION het veld [DoelPartijID]. Dan krijg je vermoedelijk een query die alle records dubbel toont, omdat elk record wel een BronpartijID en DoelPartijID zal hebben, maar dat is nu net de bedoeling. Deze query gebruik je als bron voor je subformulier, en je koppelt je hoofdformulier dan aan het veld [PartijID].
 
Dat is dan erg jammer. Had inderdaad de optie van de Union ook al geprobeerd, maar dat resulteert zoals je aangeeft in dubbele records. Dat is niet gewenst.

Dan wordt het inderdaad 2 subformulieren. Jammer maar helaas.

Bedankt in ieder geval voor je reactie.
 
... maar dat resulteert zoals je aangeeft in dubbele records.
Dat zou in beginsel niet moeten; volgens mij werkt het ongeveer zo:
in Record 1 de waarden BronpartijID = 30, DoelPartijID = 45, PartijID = 30
in Record 2 de waarden BronpartijID = 30, DoelPartijID = 90, PartijID = 30
in Record 3 de waarden BronpartijID = 45, DoelPartijID = 50, PartijID = 45
in Record 4 de waarden BronpartijID = 57, DoelPartijID = 45, PartijID = 57
in Record 5 de waarden BronpartijID = 57, DoelPartijID = 30, PartijID = 57
Al die records zijn uiteraard van verschillende cases.

De Unionquery levert dit op:
in Record 1 de waarden BronpartijID = 30, DoelPartijID = 45, PartijID = 30
in Record 2 de waarden BronpartijID = 30, DoelPartijID = 90, PartijID = 30
in Record 3 de waarden BronpartijID = 45, DoelPartijID = 50, PartijID = 45
in Record 4 de waarden BronpartijID = 57, DoelPartijID = 45, PartijID = 57
in Record 5 de waarden BronpartijID = 57, DoelPartijID = 30, PartijID = 57
in Record 6 de waarden BronpartijID = 30, DoelPartijID = 45, PartijID = 45
in Record 7 de waarden BronpartijID = 30, DoelPartijID = 90, PartijID = 90
in Record 8 de waarden BronpartijID = 45, DoelPartijID = 50, PartijID = 50
in Record 9 de waarden BronpartijID = 57, DoelPartijID = 45, PartijID = 45
in Record 10 de waarden BronpartijID = 57, DoelPartijID = 30, PartijID = 30

Als je op je Hoofdformulier PartijID 30 ziet, dan zie je dus de records 1, 2 10. Waarbij 10 dan de inverse PartijID is van record 5. En pak je PartijID 45, dan zie je de records 3,6,9. Hier zijn 6 en 9 de inverse records.
Alleen als de BronpartijID EN DoelPartijID identiek zijn, krijg je dus dubbele records.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan