Bepalen of gewerkte uren 100%, 130% of 150% zijn

Status
Niet open voor verdere reacties.

mcWimmel

Gebruiker
Lid geworden
10 dec 2015
Berichten
6
Beste leden,

Ik zit met een probleem. Mij is gevraagd om de urenregistratie die nu in Excel gebeurt, om te zetten naar Access.
Nu heb ik al redelijk wat gedaan met Access, dus leek mij dit geen probleem.
Maar waar ik tegenaan loop, is het automatisch laten bepalen waar de uren in vallen.
Bv. maandag 00:00 tot 06:00 is 150%, 06:00 tot 07:00 is 130%, 07:00 tot 16:00 is 100% etc.
Ik heb een tabel met de volgende velden: Id_Uren, Werknemer, Datum, Starttijd, Eindtijd, Totaal uren, Uren 100%, Uren 130%, Uren 150%, Uren 200%.
In een Query heb ik dmv expressies een veld Week en een veld Dag toegevoegd om te bepalen in welke week en op wat voor dag de datum valt. (zondag, maandag dinsdag etc.)
Hierna loop ik vast, ik zou niet weten hoe ik access kan laten bepalen hoeveel uren er in 100, 130, 150 of 200% vallen.
Kan iemand mij hiermee helpen? Of heeft iemand misschien een voorbeeldje hiervan?

Als voorbeeld heb ik een afbeelding uit het excel-sheet bijgevoegd.

Bij voorbaat dank,
Willem

Knipsel.JPG
 
Later we beginnen met je table aan te passen, want op deze manier ga je jezelf in de nesten werken. Access is tenslotte geen dom programma als Excel, maar een database, en die moet je ook als zodanig opzetten. Dus je tabel zou er zo uit moeten zijn: Id_Uren, Werknemer, Datum, Starttijd, Eindtijd.
Alle overige velden kun je namelijk berekenen, en die gegevens sla je dus niet op in de tabel. Om de bedragen correct uit te rekenen, heb je een hulptabel nodig. Hierin zet je de bloktijden met de percentages die je wilt gebruiken. In een query zet je deze tabel naast de datatabel en ga je op basis van een Cartesisch product records maken die de juiste percentages bij de juiste blokken zet.
Het klinkt ingewikkeld, maar het valt wel mee als je het principe door hebt. In de Access cursus heb ik een heel hoofdstuk aan deze materie gewijd, met verschillende oplossingen.
 
Hoi OctaFish,

Bedankt voor je reactie.
Ik heb de tabel aangepast, en een hulptabel gemaakt met de tijdblokken en bijbehorende procenten. Deze tabel heeft de volgende velden: Id_Tijdvak, Dag, Tijdvak_van, Tijdvak_tot, Procent.
In het veld dag komt maandag, dinsdag etc. in Tijdvak_van en Tijdvak_tot de begin- en eindtijd van het tijdvak en in Procent 100, 130, 150 en 200.
Het gaat er nu (nog) niet om, om de bedragen uit te rekenen, maar te bepalen hoeveel uur er in 100%, 130%, 150% of 200% zijn gewerkt.
Dus maandag 00:00 tot 06:00 is 150%, 06:00 tot 07:00 is 130%, 07:00 tot 16:00 is 100%. Als iemand nu om 05:00 start en om 13:00 stopt, heeft hij 1 uur 150%, 1 uur 130% en 6 uur 100% gewerkt, en dit wil ik dus automatisch laten invullen.
Ik ben er vanuit gegaan dat er naar de dag gekeken moet worden, want op zaterdag en zondag lopen de tijdvakken anders.
Nu heb ik de cursussen nog eens doorgespit, maar krijg eigenlijk niet gevonden wat ik bedoel.

Ik hoop dat je me verder kan helpen.

Gr,
Willem
 
Heb je voor maandag andere percentages als dinsdag? Zo ja: dan heb je een veld [Dag] nodig, ze nee: weg ermee :). Ik kan me nog wel voorstellen dat je een weekend tarief hebt overigens, maar dat is wel met een extra veld op te lossen (als het een percentage van het percentage is al helemaal).
 
Oh ja: doe er een voorbeeld db bij, dat werkt een stuk makkelijker.
 
Ik ben er mee bezig (geweest) maar mijn oorspronkelijke idee blijkt niet helemaal goed te werken, dus het heeft wat tijd nodig. En zoals je weet, is dit een forum dat op vrijwilligers(tijd) draait dus soms moet je een beetje geduld hebben.
 
Sorry, was zo niet bedoeld maar ik was zelf nog steeds aan het proberen en dat ging ook niet goed, vandaar nogmaals mijn vraag.

Ik was aan het proberen om voor elk percentage een IIf functie te maken, maar dan krijg ik de foutmelding kringverwijzing.
Ik heb in de tabel een veld [Totaal uren] gemaakt die ik in de tabel gelijk laat berekenen.
Hierna heb ik onderstaande in de Query opgenomen;

100%: IIf(([Starttijd]>=#07:00:00#) And ([Eindtijd]<=#16:00:00#);[Totaal uren]-[130%]-[150%])
130%: IIf(([Starttijd]>=#06:00:00#) And ([Eindtijd]<=#07:00:00#) Or ([Starttijd]>=#16:00:00#) And ([Eindtijd]<=#22:00:00#);[Totaal uren]-[100%]-[150%])
150%: IIf(([Starttijd]>=#22:00:00#) And ([Eindtijd]<=#23:59:00#) Or ([Starttijd]>=#00:00:00#) And ([Eindtijd]<=#06:00:00#);[Totaal uren]-[100%]-[130%])

De reden dat ik 23:59 gebruik, was omdat ik anders 2x 00:00 moet gebruiken voor start- en eindtijd en 24:00 pakt hij namelijk niet.
Maar in iedergeval werkt dit ook niet.
 
Ik heb in de tabel een veld [Totaal uren] gemaakt die ik in de tabel gelijk laat berekenen.
Fout, fout, fout... Ja,ik weet dat Micrsof een berekend veld in de tabelstructuur heeft gebouwd. Nee, geen spelfout. Berekende velden horen niet thuis in een tabel, en een verstandige gebruiker gebruikt ze dan ook niet. Heel simpel: erekeningen horen thuis in queries. En de oplossing van jouw probleem dus ook. En de structuur van de oplossing heb ik je ook al gegeven. Dat is ook de oplossing die je gaat krijgen. Maar doe jezelf een lol, en gooi alle berekende velden weg.
 
Hoi OctaFish,

Heb je toevallig nog een kans gehad om erna te kijken?
Ik ben zelf ook nog bezig geweest en ben wel iets verder gekomen, alleen zit ik nog met de uitdaging voor de procenten van zaterdag en zondag en eventueel ook de feestdagen.
Misschien kan jij me nog een stukje verder helpen.
Ik heb de aangepaste versie bijgevoegd.

Bekijk bijlage Registratie werken en uren test 1.rar

Groeten,
Willem
 
Zal er de komende dagen wel wat dieper naar kijken; ik had ‘m eerlijk gezegd in mijn achterhoofd geparkeerd. Een duister hoekje waar je maar beter ver vandaan kan blijven :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan