Avatar billede SGregersen Nybegynder
16. august 2009 - 13:55 Der er 9 kommentarer og
1 løsning

Beregne antal minutter efter kl. 17.00

Hej
Jeg er igang med at lave en database med et lønsystem. I den forbindelse skal jeg have databasen til at regne antal minutter for en række vagter, som er efter kl. 17.00.
Jeg har 2 felter, en for start tiden og en for sluttiden.
Jeg har beregnet antallet af minutter ialt pr. vagt vha. DateDiff, men kan altså ikke finde ud af at beregne antal minutter efter kl. 17.00.

Håber der er nogle der kan hjælpe mig :-)


Venlig hilsen
Steffen
Avatar billede jqrn Mester
16. august 2009 - 14:54 #1
Jeg tror jeg vil gøre noget i retning af

hvis sluttidspunkt > 17.00
  beregn startovertid = max (starttidspunkt; 17.00)
  overtidstidsrum = 17.00 - startovertid

Det er mange år siden jeg har haft access i hænderne så det blev lige noget pseudo kode agtigt....

Hvis du kan regne antal minutter i alt, må det være samme beregning, bare med startovertid isf start
Avatar billede mugs Novice
16. august 2009 - 14:55 #2
Ikke afprøvet:

Udtryk1: IIf(17>[slut];(DateDiff("n";"17:00";[slut]));0)
Avatar billede SGregersen Nybegynder
16. august 2009 - 16:15 #3
Ja, nu er vi da på rette vej.
Problemet er at det kun er lektioner, og de derfor godt kan starte efter 17.00. Så man kan ikke kun regne fra 17.00.

Jeg har tilpasset koden lidt:

IIf([Slut]>"17:00";((DateDiff("n";"17:00";[Slut]))-(DateDiff("n";"17:00";[Start])));"0")

Den virker fint hvis hele lektionen er efter 17.00. Men hvis den overlapper f.eks. fra 16.30 til 17.15, får den stadig 45 min.
Det er sidste halvdel der giver minus hvis det starter før 17.00, og når jeg så trækker et minus beløb fra det første, bliver det jo lagt til. I dette tilfælde 15-(-15) = 45.

Kan godt være mig der er dum nu, men kan ikke lige se mig ud af det. Håber I kan hjælpe...
Avatar billede SGregersen Nybegynder
16. august 2009 - 16:21 #4
Øhm...nu har jeg kigget på det igen, og sidste halvdel af koden skal jo sådan set bare give 0, hvis det bliver negativt.

Hvordan koder man det?
Avatar billede jqrn Mester
16. august 2009 - 16:23 #5
Det er bare at udskifte "17.00" med starttidspunktet for overtid. Det var det jeg gjorde i en variabel i flg. pseudokode: startovertid = max (starttidspunkt; 17.00)
Avatar billede SGregersen Nybegynder
16. august 2009 - 17:15 #6
Så fik jeg det til at virke.
Forstod ikke helt hvad du mente jqrn. Så kunne ikke lige bruge det så meget, men du har sikkert ret, men kunne bare ikke lige se pointen.

Min kode som jeg byggede videre på fra mugs' kode kom til at se sådan ud:

IIf([Slut]>"17:00";(DateDiff("n";"17:00";[Slut]))-(IIf([Start]<"17:00";"0";(DateDiff("n";"17:00";[Start]))));"0")

Tak for svarene begge to :-)
Avatar billede mugs Novice
16. august 2009 - 17:25 #7
Udtryk1: IIf([start]<=#17:00:00#;DateDiff("n";#17:00:00#;[slut]);IIf([start]>#17:00:00#;DateDiff("n";[start];[slut])))
Avatar billede mugs Novice
16. august 2009 - 17:27 #8
Tak for point.
Avatar billede mugs Novice
16. august 2009 - 17:28 #9
Da der er tale om tidspunkter bør disse omkranses af ##.

"" markerer tekst
Avatar billede jqrn Mester
17. august 2009 - 18:30 #10
Det er samme ide. Godt du fik det til at virke.
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