Aanroepen en data en daarna de Datediff functie gebruiken

Status
Niet open voor verdere reacties.

JosSnoek

Gebruiker
Lid geworden
30 dec 2007
Berichten
24
Aanroepen data en daarna de Datediff functie gebruiken

Hallo,

Wie zou mij met het volgende probleem kunnen helpen?
In één en dezelfde tabel heb ik 3 velden t.w. Datum in, Datum uit en Verschil.
De eerste twee velden kunnen ten alle tijde gewijzigd worden.
Hoe kan ik nu de data in deze velden opvragen en daarna het verschil uitrekenen met de Datediff functie?

Alvast bedankt voor de moeite.

Sailor
 
Laatst bewerkt:
DateDiff

De functie datediff rekent dit voor je uit. Je moet wel zelf opgeven in welke eenheden je dit verschil wilt hebben. Zet de eenheid in het eerste argument, daarna de kleinste datum/tijd en als derde de hoogste datum/tijd. Een voorbeeld:
Code:
datediff("h",#1-1-2008 10:00#,#1-1-2008 14:45#)
geeft als uitkomst 4, er zit 4 uur tussen.

Code:
datediff("n",#1-1-2008 10:00#,#1-1-2008 14:45#)
geeft 285, dat zijn minuten.

Code:
datediff("h",#1-1-2008 10:00#,#1-4-2008 14:45#)
is 76, dat zijn uren omdat de tweede datum 4 januari is.

Als je de tabel in een query zet of er een formulier op maakt, dan kun je het verschil (in uren) weergeven door iets als:
Code:
=DateDiff("h";[Datum in];[Datum uit])
Je ziet nu gelijk dat het derde veld in je tabel voor het verschil niet nodig is aangezien dit veld geen extra informatie bevat, het verschil kan altijd worden afgeleid.
 
Laatst bewerkt:
De functie datediff rekent dit voor je uit. Je moet wel zelf opgeven in welke eenheden je dit verschil wilt hebben. Zet de eenheid in het eerste argument, daarna de kleinste datum/tijd en als derde de hoogste datum/tijd. Een voorbeeld:
Code:
datediff("h",#1-1-2008 10:00#,#1-1-2008 14:45#)
geeft als uitkomst 4, er zit 4 uur tussen.

Code:
datediff("n",#1-1-2008 10:00#,#1-1-2008 14:45#)
geeft 285, dat zijn minuten.

Code:
datediff("h",#1-1-2008 10:00#,#1-4-2008 14:45#)
is 76, dat zijn uren omdat de tweede datum 4 januari is.

Als je de tabel in een query zet of er een formulier op maakt, dan kun je het verschil (in uren) weergeven door iets als:
Code:
=DateDiff("h";[Datum in];[Datum uit])
Je ziet nu gelijk dat het derde veld in je tabel voor het verschil niet nodig is aangezien dit veld geen extra informatie bevat, het verschil kan altijd worden afgeleid.
 
Hallo Sesam,

Bedankt voor je snelle reactie maar ik denk, dat ik aan de hand van jou voorbeelden de vraag verkeerd heb gesteld.

In jou voorbeeld zet je nl. in de Datediff functie reeds 2 van tevoren vastgestelde datums.

Datgene wat je voorstelde in een query wilde ik juist uitvoeren in een formulier.
Dus: = DateDiff("d";[Datum in];[Datum uit]

Ik krijg dan de foutmelding:compileerfout

De velden Datum in en Datum uit zijn in dit geval variabelen.

Alvast bedankt voor de moeite.
Sailor
 
Haakje sluiten

Je bent een haakje sluiten vergeten, zou dat het kunnen zijn.

Als je :
Code:
=DateDiff("d";[datum 1];[datum 2])

in de controlsource, besturingselementbron, van een tekstveld op een formulier zet, dan zou het moeten werken. Nu is een datediff om het verschil in dagen te bepalen niet nodig, dat kun je ook rechtstreeks van elkaar aftrekken:
Code:
=[datum 2]=[datum 1]
 
Goedemorgen Sesam,

Helaas helaas, ook dit werkt niet.
Beide mogelijkheden toegepast maar niets helpt.
Is het misschien een idee als ik de tabel met formulier hier neerzet?
Ik snap het nl. niet meer.

MvGr.
sailor
 
Helaas lukt het mij niet om de database kleiner te maken dan 36mb, ondanks het uitkleden daarvan en het gebruik van WinZip.
Sorry dat het niet lukt, ik zal er zelf mee mmoeten blijven stoeien totdat ik het vind.
In ieder geval bedankt voor de moeite,

Sailor
 
Hallo Sesam,

Ga het toch nog eens proberen, bij deze!
Dit is niet de bewuste database maar een gekopieerd situatie.

Ik hoop dat je iemand die toch nog veel moet leren, op dit gebied wil helpen.

Alvast bedankt voor de moeite,

Sailor
 

Bijlagen

Goedemiddag sesam

Zou je mij nog willen helpen met het onderhavige probleem?

Met vriendelijk groet,

Sailor
 
Opgelost

Hallo Sesam,
Ik heb geheel toevallig zelf de oplossing gevonden.
Je moet de procedure nl. wel even triggeren zodat deze doet wat je van hem vraagt.
Dit heb ik voor elkaar gekregen door er een muisklik aan te verbinden.
Nu heb ik nog een volgend probleem en dat is als volgt:
Als ik geen datum in het veld "DateOut" plaats, zou hier de systeemdatum in moeten komen te staan.
Hoe krijg ik dit voor elkaar?

Bedankt voor de moeite,
Sailor
 
Nz

Maak er dan NZ(DateOut,Date()) van. Als DateOut leeg is, dan wordt de systeemdatum genomen.
 
Hallo Sesam,

Bedankt voor je reactie.
Ik heb getracht dit statement in de procedure in te brenegn, maar ik krijg of de melding compileerfout , of verwacht: instructie einde.
Kom er ff niet uit.
Zou jij het in mijn voorbeeld database willen zetten welke ik gisteren op dit forum heb geplaatst?

bedankt,

Sailor
 
Aangepaste versie

Hier is je database weer terug. Ik heb je berekening aangepast en in een aparte procedure gezet. Hierdoor kun je 'm aanroepen vanuit de afterupdate van de twee datumvelden. Helemaal onderaan heb ik een voorbeeld gezet van hoe het in een berekend veld zou kunnen, de formule staat dan rechtstreeks in het veld, de uitkomst wordt elke keer opnieuw uitgerekend zonder ergens te worden opgeslagen.
 

Bijlagen

Bedankt

Hallo Sesam,

Bedankt voor de moeite, het werkt zoals ik het zou willen.
Hartelijke groeten,

Sailor
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan