Koppeling Organisatie en contactpersonen in hoofd- en subformulier

Status
Niet open voor verdere reacties.

IsR

Gebruiker
Lid geworden
2 jul 2015
Berichten
94
Geachte helpers,

Voor mijn vraag is vast een al vaak beantwoorde, uitgekauwde oplossing, maar ik kom er even niet op (heb even een block) en ik heb de oplossing nog niet kunnen vinden.

In Acces heb ik een tabel tOrganisatie en een tabel tContactpersonen (hoe doorsnee...)

In een hoofdformulier gebaseerd op tOrganisatie wil ik in een subformulier de bijbehorende contactpersonen laten zien.
Dat op zich heb ik werkend, maarrrr...

Eén Contactpersonen kan bij meerdere organisaties werken. De vragen:

-1 Hoe voer ik dit nu in in de database: moet ik 2x dezelfde contactpersoon invoeren alleen met een ander OrganisatieID. Dus feitelijk 2 records?
-2 Hoe krijg ik dit getoond in mijn subformulier?
Dus bij organisatie 1, zie ik contactpersoon a, b en c en bij organisatie 2 zie ik contactpersoon b en d.

Dank voor wie mij weer even op weg wil helpen.
 
Doorsnee inderdaad.... Ik gebruik altijd de tabellen tGeldPlukkers en tWerksukkels. Maar what's in a name :). Als ik het begrip 'dataredundantie' laat vallen, en jij je zin
moet ik 2x dezelfde contactpersoon invoeren alleen met een ander OrganisatieID. Dus feitelijk 2 records?
nog eens overleest, wat denk je dan dat het (in ieder geval mijn) antwoord gaat zijn? Nee dus, dat nooit. Eigenlijk is het simpel: als een één-op-veel relatie niet kan, zoals in jouw geval, dan heb je dus een veel-op-veel relatie. En die moet je ombouwen naar 2 één-op-veel relaties. En dat is simpel: hang er een tabel tussen! De tabel tCP_Organisatie gebruik je dan om elke combinatie van CP met Organisatie vast te leggen. Op die manier kan één CP bij meerdere organisaties zitten, en kan één organisatie meerdere CP's hebben.
Op het subformulier verandert er niet zoveel; je hebt alleen een extra query nodig om de CP's en organisaties samen te brengen. Die query is dan de basis voor je subformulier.
 
Dataredundantie wilde ik ook niet (vermoedde al dat ik die reactie van iemand zou komen ;) ) maar aangezien ik niet meer op de oplossing kon komen: beter gevraagd dan oeverloos blijven zoeken.

Afijn, "er daagt iets in het oosten", maar hoe krijg ik die "koppel"-tabel ook al weer gevuld vanuit een formulier "contactpersoon toevoegen"?
 
Dat is ook niet zo moeilijk lijkt mij. Je werkt vanuit de koppeltabel, waarin je met 2 keuzelijsten (cboContactpersonen en cboOrganisatie) de koppels vormt. Die personen tabel/formulier heb je toch al, en hetzelfde geldt voor de organisaties. En een formulier "contactpersoon toevoegen"? Nog nooit nodig gehad :). Kwestie van een knop op het formulier "frmContactpersonen". Desnoods met een filter of parameter in toevoegmodus geopend vanuit een hoofdformulier. Of, mooier nog, vanuit een keuzelijst. Dezelfde waarmee je de koppeltabel vult. Tip: maak het niet moeilijker en ingewikkelder dan strikt noodzakelijk :)
 
Dat laatste over fContactpersonen bedoelde ik ook, zo heb ik het ook gedaan. FContactpersoon met knop toevoegen, formulier openen in toevoegmodus.

Dat eerste is voor jou geloof ik niet zo moeilijk, voor mij wel: Ja ik heb de tabel contactpersonen en organisatie.
Nee, ik werk niet vanuit de koppeltabel (geloof ik.....)

Ik voeg een contactpersoon toe via het formulier fContactpersonen. Daarop staat o.a. organisatie_ID.

Waar gebruik ik die comboboxen uit de koppeltabel dan?
 
Waar gebruik ik die comboboxen uit de koppeltabel dan?
Het is precies andersom: je gebruikt op het formulier die keuzelijsten. Feitelijk is het niet zo moeilijk. Overigens heb ik maar zelden een knop <Toevoegen> nodig; op het moment dat ik de koppeltabel vul (en dat zou in dit geval de hoofdactie moeten zijn) zet ik op dat formulier, dat dus op de koppeltabel is gebaseerd, op basis van CPID en OrganisatieID twee keuzelijsten neer: één om een CP te kiezen, en één om een Organisatie te kiezen. Ook als de persoon of de organisatie nog niet bestaat (in de tabel natuurlijk). Als ik in de keuzelijst een persoon intyp die nog niet is ingevoerd, wordt namelijk de gebeurtenis <Bij niet in lijst> getriggerd. Die opent dan het CP formulier in toevoegmodus zodat je alle gewenste gegevens kunt invoeren. BIj sluiten van het formulier staat die persoon netjes in het formulier, en kun je naar het volgende veld. Je snapt nu hopelijk wat beter waarom ik nooit een knop <Toevoegen> nodig heb, want op elk punt waarop een situatie ontstaat waar ik iets kies dat er nog niet is (Persoon, Organisatie, Artikel etc) open ik het standaard formulier dat bij dat item hoort, vul het formulier in en gebruik de waarde direct verder.
 
Heb je toevallig een simpel voorbeeld db-je of kan je een heel simpel voorbeeldje voor me maken?
Of als er al een voorbeeld bestaat, waar kan ik het vinden?

Ik krijg het nl. niet voor elkaar mijn gedachtengang (werken vanuit hoofdform Organisatie dat is gebaseerd op tOrganisatie) "om te gooien" naar jouw gedachtengang (werken vanuit de koppeltabel).
Heb echt een blok.

Je opmerking over knop toevoegen i.c.m. "bij niet in lijst", dat kwartje valt wel. Nog nooit over nagedacht. Is zeker een zinvolle toevoeging.
 
Als je mijn broedsels zou kennen, zou je het niet in je hoofd halen om de woorden 'database' en 'simpel' in één zin te gebruiken :). Maar ik heb denk ik thuis wel iets bruikbaars liggen; zal vanavond even kijken. Sowieso gebruik ik de NotInList heel vaak, dus dat heb ik zeker voor je.
 
Hallo Octafish,
Nog wat gevonden waar je me mee op weg kan helpen?
Ik ben nl. nog steeds niet verder gekomen ermee.....
 
Helaas nog geen reactie en geen oplossing. Iemand nog suggesties?
 
Ik heb een voorbeeld db van Microsoft even voor je aangepast; het was nogal lastig om een voorbeeldje te vinden waar géén persoonlijke data in stond, en data kloppen is nou niet echt mijn hobby. Maar deze zal je hopelijk weer op wat aardige ideeën brengen. Het gaat om 2 formulieren: frmCompanyMain en frmContactMain. Tussen deze 2 zit dus een aparte tabel waarin je de combinaties vastlegt. Vanuit CompanyMain zie je dus de bijbehorende CP's, vanuit ContactMain de bijbehorende bedrijven. Ik denk dat je er zelf wel keuzelijsten van kunt maken :)
Vanwege de grootte heb ik de zip omgedoopt naar .xlsb. Het bestand dus hernoemen naar .zip en uitpakken.
 

Bijlagen

  • KlantContactSysteemPlus.xlsb
    288 KB · Weergaven: 47
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan