Filteren op veld buiten recordbron van formulier

Status
Niet open voor verdere reacties.

BartSt

Gebruiker
Lid geworden
26 jun 2012
Berichten
86
Dag iedereen,

Ik ben een eerste database aan het maken in Access. Mijn kennis van Access reikt zover als de cursus die ik gevolgd heb, praktijkervaring heb ik er niet mee. Van VBA ken ik niets, van SQL heb ik een goede basis. Dit is mijn eerste post hier, en ik heb zo het gevoel dat het niet de laatste zal worden :)

Vooraf: ik ben me ervan bewust dat de syntax voor sommige constructies in deze post niet geldig is voor eender welke taal. Ik formuleer het op deze manier om deze post compact te houden.


(Deel van) de opbouw van mijn database:

Tabel 1: WN_Persoonsgegevens
- KEY=rijksregisternummer. Dus 1 uniek record per medewerker.
- Andere velden: naam, contactinfo (verschillende velden), enz.

Tabel 2: WN_Tewerkstellingen
- KEY=rijksregisternummer + begindatum tewerkstelling
Dus meerdere tewerkstellingen per medewerker mogelijk. (Zodat functiewijzigingen e.d. kunnen worden bijgehouden.)
- Andere velden: einddatum tewerkstelling, …

Relatie tussen tabellen 1 en 2 op basis van rijksregisternummer. (1 op veel)

Formulier: Personeelsfiches.
Is gebaseerd op tabel “persoonsgegevens”. Met subformulieren voor tewerkstellingen, opleidingen, enz.
Dus 1 fiche per medewerker met daarop (ondermeer) de tewerkstellingshistoriek.

Probleem: ik slaag er niet in om in het formulier de mensen die uit dienst zijn, er uit te filteren. Dat zou ik willen doen door WN_Persoonsgegevens.* weer te geven voor de personen die een tewerkstelling hebben met einddatum Null.

Ik heb het volgende al geprobeerd:
1. Query WN_Persoonsgegevens.* inner join WN_Tewerkstellingen.*
2. Formulier “Persooneelsfiches” op die query baseren
3. Eenvoudige filter: WN_Persoonsgegevens weergeven where WN_Tewerkstellingen.Einddatum is Null.
4. Probleem: er komen per medewerker evenveel personeelsfiches tewerkstellingsrecords zijn. (Query maakt namelijk 1 lijn per tewerkstellingsrecord aan.) (Bv. X werd op een bepaald moment gepromoveerd, heeft dus twee tewerkstellingsrecords waarvan 1 zonder einddatum, en heeft daarom twee identieke personeelsfiches waarop beide tewerkstellingen staan.) Dat is natuurlijk niet logisch.

Kan iemand een oplossing geven die me toelaat 1 formulier te krijgen per medewerker, waarbij ik kan filteren op in dienst?

Alvast bedankt!

Bart
 
Laatst bewerkt:
Of iemand in dienst is of niet, lijkt mij een status van het Persoonsrecord, en niet van zijn Contracten. Je bent, of je bent niet zal ik maar zeggen :) Dus ik zou de indienst datum in de persoonstabel zetten, en de uitdienstdatum ook. Daarnaast wil je vastleggen welke contracten iemand heeft, en dat doe je dan in je tabel [WN_Tewerkstellingen]. Maar volgens mij heb je zelfs in die constructie nog een eventualiteit waar je geen rekening mee houdt. Ik gebruik een vergelijkbaar systeem, waarbij ik meestal al van tevoren weet wanneer iemand uit dienst gaat (bij contracten). De uitdienstdatum wordt bij ons dus ingevuld op het moment dat die bekend is. Dat kan al gelijk met de indienstdatum zijn. Een ingevulde uitdienstdatum wil dus niet zeggen dat die persoon al uit dienst is. Daarom heb ik er nog een Ja/Nee veld bij: InDienst. En dit wordt aangevinkt of uitgevinkt. Op basis van dat veld weet je dus of een werknemer in dienst is of niet.
In jouw situatie zou ik op zijn minst een InDienst veld (Ja/Nee) toevoegen aan je Personeelstabel, en daar kun je dan simpel op filteren.
 
Michel,

Ik had een vergelijkbaar veld zelf al overwogen, maar niet gemaakt omdat wij zelden of nooit met tijdelijke contracten werken. Daarom beschouwde ik zo'n extra veld als dubbele informatie.
Je hebt echter gelijk: het is niet logisch dat je enkel op die einddatum moet afgaan om de in/uit dienst status na te gaan. Ik ga dat veld dus toch maken.

Bedankt voor je input!

Ik blijf wel nieuwsgierig: is wat ik vroeg technisch gezien mogelijk?
 
Je kunt met een Outer Join filteren op Null; op die manier zie je dus alle werknemers, en ook de lege datumvelden (of niet natuurlijk).
 
Natuurlijk :rolleyes: De theorie kennen is een ding, ze toepassen duidelijk een ander :) Bedankt voor je hulp, Michel!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan