ACCESS - Uren optellen boven de 24u werkt niet correct.

Status
Niet open voor verdere reacties.

fde

Gebruiker
Lid geworden
31 aug 2017
Berichten
110
Ik heb een enkelvoudig formulier gemaakt waarvan de bedoeling is per weekbasis uur registratie (formaat uren-minuten) te doen van onze interne/externe medewerkers.
uren_blanco.PNG

Bij het optellen van de uren heb ik gemerkt dat m'n optelformule werkt tot onder de 24u.
uren_2345.PNG

Boven de 24u wordt de teller terug op 0 gezet en rekent de optelsom opnieuw uit.
uren_32_8.PNG

Alle veldeigenschappen staan op korte tijdsnotatie (00:00).
Momenteel gebruik ik volgende optelformule in de expressie (kolom NU): =IIf(IsNull([txtUrenNu1]);0;[txtUrenNu1])+IIf(IsNull([txtUrenNu2]);0;[txtUrenNu2])+ ……. tot …….. txtUrenNu7 =(zondag).

Ik heb wel wat geëxperimenteerd met LTRIM in de expressie in te passen maar blijkbaar zal ik het niet juist doen.
Kan iemand me op weg helpen aub met de juiste formule?
 
Laatst bewerkt:
Je probleem is terug te brengen tot één zinnetje uit je vraagstelling:
Alle veldeigenschappen staan op korte tijdsnotatie (00:00).
Uren zijn, zoals de naam al zegt, uren. En uren zijn getallen, geen tijd. Je denkt handig te zijn door 8:00 en 7:45 te laten invullen, maar dat is dus een tijdstip en geen urenwaarde. 7:45 is misschien het tijdstip waarop de dienst begint, maar niet de duur. Ergo: je telt geen getallen op, maar tijden. En dan loop je dus vanzelf tegen het probleem aan dat een dag maar 24 uur kent, en dan houdt-ie echt op en begint de volgende dag. Dus: als je iemand 4 dagen lang 8 uur laat werken, dan heb je wellicht 32 uur gewerkt, maar je hebt de tijd 32:00:00 ingevoerd. Die bestaat niet, dus zie je 8:00 van de volgende dag.
Sowieso zou ik dus ofwel het systeem veranderen, en de mensen echte getallen laten invullen (maar dan kan je dus niet zo makkelijk 7:45 invoeren als je 7 uur en 45 minuten bedoeld, ofwel de tijden omrekenen naar hele getallen. En dan moet je elke ingevoerde waarde dus met 24 vermenigvuldigen.
 
Dus als ik het goed begrijp dien ik de gepresteerde uren (= uurwaarde) in te geven als een getal en het in de totalen uit te rekenen en weer geven naar uren en minuten.
bv: 7,5 = 07:30 ; 7,33 = 07:20 dus: 14,88 stemt dan overeen met 14:50.
 
Laatst bewerkt:
Je begrijpt het geloof ik wel, maar je draait het om :). Tijden zijn getallen tussen 0-0,99999999. Dus 7:20 is in het eggie 0,305555555555556, en 14:50 is dan 0,618055555555556. Om van een tijd een 'taalkundig' getal te maken (als in: "ik heb 8,5 uur gewerkt vandaag") moet je de tijden dus met 24 vermenigvuldigen. Of je dat bij de dagingave doet, of bij de totaaloptelling, maakt dan niet zoveel uit denk ik. Het hangt er ook een beetje vanaf hoe nauwkeurig je de uren wilt registreren. Je zou ook keuzelijsten kunnen maken voor de ingaven, waarbij je de keuzes beperkt tot blokken van een kwartier.
Zelf zou ik overigens een doorlopend formulier gebruiken, zonder dat raster. Zodat je, als je 4 dagen werkt op één klus, je 4 records aanmaakt. En doe je twee taken op een dag, dan maak je voor die dag twee records. Veel flexibeler. En volgens mij ook makkelijker in te vullen voor een gebruiker. Wat jij hebt gemaakt, zou bij mij dan het resultaat zijn van een Kruistabel query. Want als resultaat is het natuurlijk wel een handige manier van presenteren. Alleen (in mijn bescheiden optiek) niet zo geschikt voor ingave.
 
Ik heb de vormgeving gewoon veranderd naar decimaal. Veel gemakkelijker en minder stress.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan