Avatar billede aspnooben Nybegynder
10. juni 2010 - 10:08 Der er 4 kommentarer og
1 løsning

Problemer med tidsberegninger

Hej Eksperter.

Jeg har et problem med beregning af tidspunkter, som jeg håber, I kan hjælpe mig med:
1. Jeg vil gerne beregne, hvor mange timer hver medarbejder arbejder i alt, samt i tidsrummet kl. 17-06.

2. Desuden kan medarbejderne optjene et tillæg pr. time, hvis de arbejder kl. 2300-2400 på fredage, kl. 0000-2400 på lørdage og helligdage, samt kl. 0000-2300 på søndage. Derfor ønsker jeg at vide, hvor mange timer, medarbejderne har arbejdet inden for ovennævnte tidsrum.

Jeg har lavet flere tabeller, bl.a.:

- en tabel med opgaven og medarbejderne, startdato, starttid, slutdato og sluttid (en form for ordrelinie),

- en tabel med angivelse af de tidsrum, der skal beregnes tillæg af (fredag, lørdag, søndag og helligdag) med felterne Dag (Tekst), Starttid (Langt klokkesletsformat), Sluttid (Langt klokkesletsformat),

- samt en tabel, hvor datoerne for helligdagene er anført (da jeg ikke kan finde en kalender, hvor helligdagene automatisk fremgår) med feltet Helligdag, som Lang datoformat.

Medarbejderen kan reelt arbejde over flere dage, f.eks. start den 10. juni 2010 kl. 1400 med slut den 15. juni 2010 kl. 0800. For eksemplets skyld antager jeg, at den 14. juni 2010 er en helligdag.

Min egen ide er, at beregningen først skal finde ud af, om tidsintervallet i "ordrelinien" indeholder en helligdag, da denne overruler de andre tillæg. F.eks. vil en helligdag om fredagen udløse tillæg hele dagen og ikke kun fra kl. 2300, som en normal fredag gør.

Dernæst skal den i et felt beregne antallet af timer, som tillæggene skal beregnes af (pkt. 2 ovenfor), samt i et felt beregne antallet af timer arbejdet i alt og i tidsrummet kl. 17-06 (pkt. 1 ovenfor).

Jeg håber, I kan hjælpe mig med en uddybende løsning, da jeg stadig er nybegynder på området.
Avatar billede mugs Novice
10. juni 2010 - 10:12 #1
Avatar billede aspnooben Nybegynder
10. juni 2010 - 14:30 #2
Hej Mugs.

Jeg fandt lidt hjælp i følgende tråd: http://www.eksperten.dk/spm/831408

Desværre indeholder den ikke eksempler på tidsperioder over døgnet f.eks. som i mit eksempel, hvor arbejdstiden kan være 1600-0200, og jeg samtidig skal vide, hvor mange timer der ligger mellem kl. 17-06.

Problemstillingen til pkt. 2 har jeg stadig ikke fundet noget svar, der ligner.
Avatar billede mugs Novice
10. juni 2010 - 15:04 #3
Helt basalt er problemet jo, at du har dato og tidspunkt i 2 forskellige felter. Jeg har eksperimenteret lidt med denne kode:

Private Sub kommer_BeforeUpdate(Cancel As Integer)
If Me.kommer > Me.går Then
Me.Tekst4 = (går - kommer) + 24
Else:
Me.Tekst4 = (kommer - går)
End If
End Sub

Felterne kommer og går er i tabellen, mens Tekst er ubundet i formularen. Du er jo nødt til først at måle, om "kommer tiden" er > end "gå tiden" og indrette beregningen derefter.

Hvis dine tidsfelter havde indeholdt BÅDE dato og tidspunkt, var du aldrig løbt ind i dette problem.
Avatar billede aspnooben Nybegynder
10. juni 2010 - 16:57 #4
Ok, har du eventuelt en løsning, hvis jeg laver et nyt tidsfelt med dato og tidspunkt samlet?

Jeg er taknemmelig over, at du har hjulpet mig indtil videre.
Avatar billede kabbak Professor
10. juni 2010 - 23:15 #5
Kan vel laves sådan med 4 felter

Private Sub kommer_BeforeUpdate(Cancel As Integer)

Me.kommer = startdato + starttid
Me.går = slutdato + sluttid

If Me.kommer > Me.går Then
Me.Tekst4 = (går - kommer) + 24
Else:
Me.Tekst4 = (kommer - går)
End If
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester