wat is hier fout

Status
Niet open voor verdere reacties.

dinoshop

Terugkerende gebruiker
Lid geworden
8 sep 2000
Berichten
1.100
=Round((DateDiff("n";[tijdstart];[tijdeind])/60);2) & " uur";IIf(([tijdeind]<[tijdstart];[tijdeind]-[tijdstart];[Eindtijd]+1-[tijdstart])*24)
 
Laatst bewerkt:
Leg eens uit wat je wilt; er zitten inderdaad nogal wat fouten in de formule, maar als ik niet weet wat de bedoeling is, kan ik ook niet aangeven hoe je het moet verbeteren.
 
eigenlijk heel eenvoudig
eindtijd - begintijd
is eindtijd bv 03:00 dus volgende dag moet hij dit berekenen.
bv begintijd 21:00 eindtijd 03:00

normale uren over een dag berekend hij goed zodra ik na de volgende dag ga heb ik dus een probleem dacht ff optelossen met te vertellen iif enz
 
Ja maar wat wil je zien? Je berekening kan een stuk simpeler (zonder DateDiff) want tijden zijn getallen, die je van elkaar aftrekt. Levert altijd een getal op. Dat vermenigvuldig je dan met 24. Maar de combinatie van de 2 die je hebt is heel vreemd. Dus: wat wil je zien?
 
uren tussen 03:00 en 21:00 moet zijn 6 uur
format eindtijd -begintijd *24
 
uren tussen 03:00 en 21:00 is 18 uur hoor.

uren tussen 21:00 en 03:00 is 6 uur :rolleyes:
 
probleem ligt hier dus .
uren2.jpg

zoals je kan zien geeft hij aan 03:00 - 21:00 =0,75 dat is zo maar moet zijn 0,25
 
uren tussen 03:00 en 21:00 is 18 uur hoor.
Daar zit je naast; als je van 03:00 en 21:00 gaat wel, maar TS gaat van 03:00 volgende dag naar 21:00 vorige dag.
Maar ik blijf mijn vraag herhalen: wat wil je zien? Ik weet dat je een berekening wilt, maar je zet niet voor niks 2 verschillende formules achter elkaar. Daar wil je iets mee. Dus: wat denk je in het veld te zien als de formule werkt? Gewoon letterlijk. Je wilt niet: "uren tussen 03:00 en 21:00 moet zijn 6 uur" zien, want die uitkomst krijg je nooit met jouw formule.
 
ik dacht dus al hij bij de eerste deel goed de uren uit rekent dan zou het met wat ik er achter zet ook de opdracht uit kunnen voeren als eindtijd < is dan begintijd hij dan deze formule pakt en wel de goed uren er neer zet dus niet 0.75 maar 0.25 en zo op 6 uur komt in plaats -18
als dit anders kan graag de oplossing
dus rekening houden met de volgende dag.
hoop dat je snap
 
De veruit makkelijkste oplossing is om de velden met de functie Now() (bijvoorbeeld gekoppeld aan een knop). De starttijd kun je met een standaardwaarde laten vullen (=Now() ) bij het maken van een nieuw record bijvoorbeeld, of zoals ik voorstelde met een knop. Die krijgt dan deze code:
Code:
Private Sub Knop33_Click()
    Me.tijdstart = Now()
End Sub
Idem voor het veld tijdeind, waar je ook een knop kunt gebruiken om hem te vullen:
Code:
Private Sub Knop34_Click()
    Me.tijdeind = Now()
End Sub
De weergave van de velden zet je op Korte tijdnotatie, zodat je alleen tijden ziet. Maar omdat je nu ook de datum meeneemt, kun je de berekening altijd maken, ongeacht op welke dag je het veld vult.

In het eerste geval krijg je deze formule:
Code:
Expr1: Round(([tijdeind]-[tijdstart])*24,2) & " uur"
Als je alleen de tijden invult, dan moet je dus kijken naar de eindtijd t.o.v. de begintijd.
Code:
Expr2: (IIf([eindtijd]<[starttijd];([eindtijd]+1)-[starttijd];[tijdeind]-[starttijd]))*24 & " uur"

Overigens heb je in je eerste bericht de veldnamen door elkaar gehusseld ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan