Oprunding til nærmeste halve time..
Hej eksperten..Jeg har i en tidligere tråd fået hjælp til et stykke kode som skulle beregne hvor mange timer der imellem to tidspunkter, og efterfølgende runde op til den næstkommende halve time. Den skal altid runde op, da der skal gives en pris pr. påbygndte halve time.. Koden jeg har fået ser ud som følgende:
Function timeDifRoundUp(d0tfirst, d0tlast, minutLeastUnit As Integer)
timeDifRoundUp = d0tlast - d0tfirst
If d0tfirst > d0tlast Then timeDifRoundUp = timeDifRoundUp + 1
timeDifRoundUp = Int(24 * 60 * timeDifRoundUp)
If timeDifRoundUp Mod minutLeastUnit > 0 Then
timeDifRoundUp = (Int(timeDifRoundUp / minutLeastUnit) + 1) * minutLeastUnit: End If
timeDifRoundUp = timeDifRoundUp / 60 / 24
End Function
og når jeg så i min forespørgelse skal hente værdierne så ser koden ud som følgende:
?cdate(timeDifRoundUp(cdate([LevAfg]),cdate([LevAnk]),30))
Hvis jeg så sætter [LevAfg] = 11:00 og [LevAnk] = 14:01, så får jeg ud at der er 03:00:00 timer imellem, og i dette tilfælde burde den skulle runde op til 03:30:00..
Hvis jeg i stedet sætter [LevAfg] = 11:00 og [LevAnk] = 14:02, så får jeg at der er 03:30:00 timer...
Det som så gør det hele meget mærkeligt, er at hvis jeg manuelt indsættere klokkeslettene i koden:
?cdate(timeDifRoundUp(cdate("11:00"),cdate("14:01"),30))
så får jeg at der er 03:30:00 timer..
Er der nogen som har en ide til hvad der kan forårsage dette mærkelige resultat?
P.S.
Den tidligere tråd hvor jeg fik koden kan ses på:
http://www.eksperten.dk/spm/875417#reply_7388562
Mvh.
Knud