Datums in Access en Exel

Status
Niet open voor verdere reacties.

Road Dogz

Terugkerende gebruiker
Lid geworden
9 nov 2006
Berichten
1.630
Ik werk op dit moment veel met datums (tijdsverlopen) in access en exel (gegevens worden vanuit access naar exel gehaalt). Ik weet dat er in feite een getal gebruikt wordt voor een datum maar nu doet het volgende probleem zich voor. In exel wordt wel het juiste tijdsverloop getoont maar in access is er altijd een dag te weinig.

Vb.

Een getal geeft in exel bijvoorbeeld "2 dagen 11 uren"
In access geeft datzelfde getal "1 dag 11 uren"

Weet iemand waar het probleem hier ligt.
 
Hallo Road Dogz,

geef even aan wat het gegevenstype van je kolom(men) is en hoe je het tijdsverschil berekent.

Groet,

Tardis
 
Hallo Road Dogz,

geef even aan wat het gegevenstype van je kolom(men) is en hoe je het tijdsverschil berekent.

Groet,

Tardis

Hoi

Er zijn vier kolomen in access waar ik de berekening mee doe DatumIn, UurIn, DatumUit UurUit. vb: 12/05/07 13:00 15/05/07 14:00

In een query bereken ik met behulp van een expressie het tijds verschil, zoveel dagen en zoveel uren. Die berekening geeft een getal. In exel geeft dit getal met als opmaak "d:uu" het juiste tijdsverschil weer, in access geeft dit getal met als opmaak "d:uu" 1 dag te weining.
 
Hallo Road Dogz,

wat is het gegevenstype van je kolommen?
Hoe ziet je expressie er precies uit?

Groet,

Tardis
 
Gegevenstype van deze kolommen is datum/tijd

Expressie ziet er als volgt uit:

TotaletijdIn = ([DatumUit]-[DatumIn])+([UurUit]-[UurIn])
 
Hallo Road Dogz,

dat gaat in Acces niet lukken op deze manier.
Waar het op neer komt is dat je een aantal dagen verschil overhoudt van 3.
Access begint te tellen vanaf 31 december 1899, dat is dag 0.
Daar wordt 3 (je uitkomst) bij opgeteld, en kom je uit op 2 januari 1900.
Gekonverteerd naar dagnotatie levert dat 2 op.

Je zult een funktie moeten schrijven om eerst het verschil in je kleinste eenheid (minuten in jouw geval) uit te rekenen.
Dat verschil reken je vervolgens weer om naar dagen en minuten.

Deze link

http://support.microsoft.com/kb/210604/nl

helpt je verder op weg.

Groet,

Tardis
 
Bedankt voor de info maar heb een gelijkaardige oplossing kunnen creeëren met een if-structuur. Dit geeft het gewenste resultaat. Kan je ook met de ifstructuur in expressies werken? Ik werk nu met gewoon programmacode bij een bepaalde gebeurtenis.
 
Hallo Road Dogz,

in queries kun je de funktie IIF gebruiken (zie Access Help).

Ik raad je toch aan om een zelfgedefinieerde funktie te maken om tijdsverschillen te berekenen.
Als je eindtijd voor je begintijd gaat vallen of 1 van je datums valt in een ander jaar, ga je geheid problemen krijgen met je huidige oplossing.
Voorkomen is beter dan genezen ;)

Groet,

Tardis
 
Ik heb rekening gehouden met het feit dat het UurIn later kan vallen dan het UurUit

Deze code heb ik gebruikt:

If Me.UurIn.Value < Me.UurUit.Value Or Me.UurIn.Value = Me.UurUit.Value Then

Me.TotaalTijdInDagen.Value = Me.DatumUit.Value - Me.DatumIn.Value
Me.TotaalTijdInUren.Value = Me.UurUit.Value - Me.UurIn.Value

Else

Me.TotaalTijdInDagen.Value = (Me.DatumUit.Value - Me.DatumIn.Value) - 1
Me.TotaalTijdInUren.Value = (Me.UurUit.Value - Me.UurIn.Value) + 24

End If

Ik heb wat ziiten testen en hij geeft toch altijd het gewenste resultaat.... Ook bij verschillende jaren. Tenzij jij iets opmerkt :confused:


Ik heb wel het aantal dagen en uren in 2 apparte velden opgesplits
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan