decimaal naar tijd

Status
Niet open voor verdere reacties.

rebirth

Gebruiker
Lid geworden
17 jun 2008
Berichten
170
Ik heb hier al een aantal topics teruggevonden omtrent dit onderwerp, maar toch niet helemaal wat ik zoek.

In een database heb ik velden met uren in (korte tijdnotatie). Op deze velden voer ik een aantal bewerkingen uit via diverse query's. Het resultaat is een veld met een getal (bvb 1,38333333). Nu zou ik draag dit getal omzetten naar een tijdsnotatie. Wel zo, dat het ook boven de 24u kan gaan, dus dat ik bvb als resultaat 27:41 kan krijgen. Kan iemand me vertellen hoe ik dit moet aanpakken?

Alvast dank.
 
]Da's geen gemakkelijke formule, maar het kan wel:

Tijd: (Int(Now()-[lastmeetingdate]))*24+Val(Format((Now()-[lastmeetingdate])-(Int(Now()-[lastmeetingdate]));"hh")) & ":" & Val(Format((Now()-[lastmeetingdate])-(Int(Now()-[lastmeetingdate]));"mm"))

Ik zal de brokstukken ook maar uitleggen ;)
Ik heb voor mijn voorbeeld een veld LastMeetingDate genomen, en de huidige tijd.
Om te beginnen: in Excel heb je een urenopmaak waarin je in één keer het aantal uren ziet, en niet de uren in een dag. Die zal je wel kennen: [hh]:mm. Jammer genoeg kent Access die opmaak niet, dus dat werkt niet. Je moet dus de tijd herberekenen naar dagen, en uren. Dat doe ik in het voorbeeld als volgt:

Stap 1:
UrenDagen: (Int(Now()-[lastmeetingdate]))*24
Bereken het datumverschil tussen de twee te vergelijken datumvelden, en maar daar met Int een geheel getal van. Een tijd is het cijferdeel achter de komma, en daar wil ik nu nog niet naar kijken. In jouw voorbeeld (1,38333333) komt daar dus het getal 1 uit.

Stap 2:
Uren:Val(Format((Now()-[lastmeetingdate])-(Int(Now()-[lastmeetingdate]));"hh"))
Bepaal nu van het restand (het deel achter de komma) de tijd, met de functie Format. Omdat je het aantal uren moet optellen bij het aantal dagen, staat de format functie op hh.

Stap 3:
Minuten:Val(Format((Now()-[lastmeetingdate])-(Int(Now()-[lastmeetingdate]));"mm"))
Bepaal het aantal minuten. In weze dezelfde formule als in stap 2, maar nu met mm.

Stap 4:
Combineer alle elementen tot één 'tijdsaanduiding'. Het is natuurlijk een tekstveld, want een niet-bestaande tijdopmaak.

Je kunt er waarschijnlijk ook wel een functie voor schrijven, die je dan wat eenvoudiger kunt oproepen. Als ik tijd heb, maak ik die ook nog wel voor je.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan