Functie als datum >= ... dan tabel X

Status
Niet open voor verdere reacties.

maomanna

Gebruiker
Lid geworden
20 feb 2014
Berichten
234
Hallo allen,

Momenteel ben ik bezig om een database te maken ter controle of een personeelsdossier compleet is.

Alles werkt naar behoren, maar loop nu tegen een probleempje aan namelijk het volgende.

Ik heb een aantal tabellen (Werknemers, Verplichte documenten, documenten aanwezig in dossier).
Met een functie maakt hij netjes de vergelijking en komt in een query met het resultaat.

Helaas is de tabel verplichte documenten te statisch.
We willen namelijk de mogelijkheid om vanaf datum indienst X, voor een functie Y, document Z verplicht te kunnen stellen, zonder terugwerkende kracht.
Als het niet met terugwerkende kracht is, zal een nieuwe database gemaakt moeten worden en die moet vanaf die datum gevuld worden, volgens de dan geldende eisen. Dan heb je over 10 jaar een hoop extra databases, wat mij een onwenselijke situatie lijkt.

Is het mogelijk om een soort module te maken waarbij ikzelf de verplichtheid per document per FF/functie in kan zetten en vanaf wanneer in dienst, tot wanneer die van toepassing is? Waar hij bij de vergelijking of een dossier compleet is ook daar naar kijkt.

Zelf dacht ik eraan om een nieuwe tabel erbij te maken, waarbij de functiecode, ingangsdatum verplicht document en dan alle documenten die genoemd staan in de tabel verplichte documenten.
Vervolgens een soort van if then else te maken.

De functie zoals het momenteel is om de compleetheid te checken is:
Code:
Public Function Compleetdeel1(lijstChecklist As Boolean, vpChecklist As Boolean, lijstScreening As Boolean, vpScreening As Boolean, lijstBig As Boolean, vpBig As Boolean, lijstHerBig As Boolean, vpHerBig As Boolean, lijstSRC As Boolean, vpSRC As Boolean, lijstHerSRC As Boolean, vpHerSRC As Boolean, lijstVOG As Boolean, vpVOG As Boolean) As Boolean
    Compleetdeel1 = (Not vpChecklist Or lijstChecklist) And (Not vpScreening Or lijstScreening) And (Not vpBig Or lijstBig) And (Not vpSRC Or lijstSRC) And (Not vpVOG Or lijstVOG)
End Function

Er is nog een deel2 maar is hetzelfde als hierboven (vanwege aantal argumenten).
Het mooist zou zijn om hier een aanvulling op te maken en op basis van indienst de extra eisen erbij te halen.
 
Als het niet met terugwerkende kracht is, zal een nieuwe database gemaakt moeten worden en die moet vanaf die datum gevuld worden, volgens de dan geldende eisen. Dan heb je over 10 jaar een hoop extra databases, wat mij een onwenselijke situatie lijkt.
Dit lijkt mij een rare situatie, want voor elke nieuwe datum een nieuwe datatbase maken? Ik vermoed dat je 'tabel' bedoelt? Maakt niet uit, na 6 keer doorlezen van je vraag snap ik er eerlijk gezegd nog niet zo veel van. Je mist volgens mij nog een tabel [tblFunctieprofielen] waarin je vastlegt welke documenten bij welke functie horen. Zou zelfs een gesplitste tabel kunnen zijn: [tblFunctieprofielen] en [tblFunctieprofiel_Documenten]. Hierin leg je vast welke documenten verplicht zijn bij een functie. In [tblFunctieprofiel_Documenten] leg je dan de ingangsdatum vast, en de einddatum zodat je per document weet vanaf wanneer het verplicht is, en wanneer niet meer (einddatum). Op basis van die datums en de indienstdatum kun je dan heel makkelijk zien of een document verplicht is (indienstdatum valt tussen begindatum_verplicht en einddatum (of lege einddatum) of niet (indienst ligt vóór begindatum_verplicht of ná einddatum_verplicht). Al dat handmatige opzoekwerk (wat je nu volgens mij doet) is dan helemaal niet nodig. Dat laat je de db lekker zelf uitzoeken :)
 
Klopt, de tblVerplicht bevat alle documenten die voor een functie verplicht zijn en alle functies. niet gesplitst.
de tblDossier zijn de documenten die in het dossier zitten.

Als ik je goed begrijp moet ik de tblVerplicht aanpassen en per document aangeven vanaf welke datum deze verplicht is.
Dat is wel een hels karwei met 263 functies en 17 documenten en waarbij het wijzigt zijn slechts 1 of 2 documenten bij pak m beet 10 functies.
De ingang- en einddatums wilde ik eigenlijk los koppelen van de tblVerplicht en dit benoemen in tblAanvullend.

Alleen dan moet ik wel een functie hebben waarbij dit aangevuld wordt.

*edit*
Ik las je bericht nog eens, maar wat je aangeeft, regelt de database zelf. Krijg een mooie rapportage per afdeling/divisie (net wat je wil) welke documenten ontbreken.
Het gaat alleen om specifieke toevoegingen van documenten vanaf een bepaalde datum voor een specifieke functie.
 
Laatst bewerkt:
Of het veel werk is weet ik niet; 263 functies is op zich best veel, maar met 17 documenten moet het wel te doen zijn. Ik neem aan dat een paar documenten altijd wel moeten (paspoort, rijbewijs, BSN nummer e.d.) dus dat is heel simpel te doen. Om alle documenten in één record te zetten zou ik niet doen, want dan is je tabel niet genormaliseerd. En komen de problemen echt wel naar jou toe, dan hoef je ze niet meer te zoeken (kan ook een voordeel zijn ;) ). Zeker als een document eigen datums heeft, mag het al niet in dezelfde record staan als een ander document met andere datums. Maar zonder de db te zien, is het natuurlijk allemaal luchtfietsen dat ik kan doen :).
 
Ik heb de database wat vereenvoudigd.
Als je het werkbestand opent, heb je 7 tabellen welke je wellicht moet herkoppelen ivm de locatie.

in Eisenlijst staan de documenten welke in het dossier zitten.
In tblVerplicht staan de documenten die verplicht zijn per functie.

In tblAanvullend staat dat vanaf 01-05-2014 voor de functie met code 4 een medische keuring is verplicht.

Eigenlijk moet hij kijken naar datum indienst. Als deze datum gelijk of na 01-05-2014, dan moet hij het aangevinkte document in tblAanvullend voor die functie meenemen en daarna tblVerplicht.
Is de datum eerder, dan alleen kijken naar tblVerplicht.

Het bestand is te groot, vandaar de link

Wellicht dat het zo meer duidelijkheid geeft.
 
Laatst bewerkt:
Een hoop kijkers.
Is het wenselijk dat ik mijn doel duidelijker beschrijf?
 
Ik snap eerlijk gezegd niet zo veel van je voorbeeldje; er zitten hele rare relaties in tussen tabellen die niet kloppen. Dat komt wellicht doordat je een vereenvoudigde versie hebt moeten maken, maar om wat te noemen: de tabel [tblAanvullend] bevat maar één record, en in die tabel is het veld ID het sleutelveld. In de tabel [tblVerplicht] heb je een koppeling gemaakt op basis van het veld [Functiecode], wat in beide tabellen geen sleutelveld is. Hoe kun je dan goed koppelen? Zinloos dus, die relatie kun je net zo goed vervangen door [CV] op [Checklist]. Die zal dezelfde (totaal incorrecte) koppeling maken en toestaan.
 
Als antwoord op deze vraag, die je vast hier wilt laten behandelen:
kunnen de voorwaarden ook gebruikt worden om te kijken naar verschillende tabellen?

dus zoiets?
iif(geboortedatum = 01-01-2014; tabel 1 AND tabel 2; tabel2)
Nee, dat gaat zo niet. Afgezien dat je voorbeeldje wel héél erg non-code is, en daardoor behoorlijk onbegrijpelijk.
 
de tabel [tblAanvullend] bevat maar één record, en in die tabel is het veld ID het sleutelveld.
In deze tabel moeten variabelen komen te staan, dat als de raad van Bestuur besluit dat een document vanaf een moment verplicht is gesteld, deze hierin komen voor de betreffende functie vanaf de besloten datum.
Hiermee wil ik voorkomen dat voor iedereen in die functie, die dus voor die datum in dienst zijn gekomen ook verplicht is (het verhaal dat iets niet met terugwerkende kracht is).

In de tabel [tblVerplicht] heb je een koppeling gemaakt op basis van het veld [Functiecode], wat in beide tabellen geen sleutelveld is. Hoe kun je dan goed koppelen? Zinloos dus, die relatie kun je net zo goed vervangen door [CV] op [Checklist]. Die zal dezelfde (totaal incorrecte) koppeling maken en toestaan.
Met deze tabel ben ik dus nog aan het vogelen om het bovenstaande te bewerkstelligen. Zoiets had ik in gedachte. Er moet ergens iets komen, zodat hij naar tabellen kijkt en bepaald wat ervoor verplicht is. In tblVerplicht staat wat voor een functie verplicht is en in tblAanvullend staan de aanvullende eisen voor de betreffende functie in dienst vanaf de datum die daarin staat (welke dus modulair moet zijn)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan