Afronden per kwartier

Status
Niet open voor verdere reacties.

j.kaak

Nieuwe gebruiker
Lid geworden
29 jun 2004
Berichten
1
Hallo,

kan iemand mij vertellen hoe in tijden kan afronden op een kwartier.

BV. 12:13:02 naar 12:15:00
 
Meer uitgebreidt

Zo'n zelfde funcie zoek ik alleen dan wat uitgebreider ;).


Alles wat groter of gelijk is aan 1 en kleiner of gelijk is aan 7 moet afgerond worden naar 0.

Alles wat groter of gelijk is aan 8 en kleiner of gelijk is aan 22 moet afgerond worden naar 15.

Alles wat groter of gelijk is aan 23 en kleiner of gelijk is dan 37 moet afgerond worden naar 30

Alles wat groter of gelijk is aan 38 en kleiner of gelijk is aan 52 moet afgerond worden naar 45

Alles wat groter of gelijk is aan 53 en kleiner of gelijk is aan 59 moet afgerond worden naar 00 + 1 uur.

Ik ben niet zo goed in VBA en heb het geprobeerd met If , Then, Else maar dit lukt niet :confused: , Kan iemand een voorbeeld geven :thumb: ?
 
Laatst bewerkt:
Spelen met cijfers

Beste Resi,

En als je er 8-1 aftrekt? Dus:

Stel A1: 12:13:00
B1: =TIME(HOUR(A1);CEILING(MINUTE(A1)-7;15);SECOND(A1))

Probeer het eens.
 
Niet precies wat ik zoek

Dit is niet precies wat ik zoek. Het lijkt wel een Excel formule. Ik kan er in Access niets mee doen in mijn query. Ik heb een veld waar datum en tijd in staat. Ik haal via Minuten: Format([Call start];"nn") de minuten eruit. Ik wil dus graag een complete formule hebben die voldoet aan wat ik eerder heb geschreven.

Het mag ook een VBA module zijn.

Zelf dacht ik aan IIf([minuten] >= 8 and <=22 then ([minuten]);15) else if ...... Alleen dit werkt dit.

Ik ben benieuwd of we eruit komen. :p
 
Laatst bewerkt:
Access:

En als je er 8-1 aftrekt, deelt door de factor, afrondt en er 15 bij optelt?

Stel Veld1 = V1
=TIME(HOUR(V1);INT((MINUTE(V1)-7)/15)+15;SECOND(V1))

Probeer het eens.
 
Laatst bewerkt:
Wordt gewaardeerd

Het wordt natuurlijk gewaardeerd dat er met me meegedacht wordt. Als ik de oplossing wist ga ik de vraag hier natuurlijk niet stellen.

Maar ik denk dat je formule gewoonweg niet klopt. Als ik het vertaal lees ik


=TIME(HOUR(afgerond);INT((MINUTE(afgerond)-7)/15)+15;SECOND(afgerond))

ga ik het uitrekenen dan klopt het niet. vb 33-7/15+15= niet eens een heel getal. Het kan natuurlijk zijn dat ik je helemaal verkeerd begrijp en dan zou het fijn zijn als je het een wilt uitschrijven zoals ik in het voorbeeld heb gedaan met If >=8 and <= 22 then 15 else if >=23 and <=37 then 30 etc...... << Eigenlijk ben ik hierna op zoek.

Bijgevoegd nu een voorbeeld bestand van wat ik graag wil maken.

Ik heb nu twee voorbeelden gevonden maar heb hier toch wat hulp bij nodig.
http://www.asp101.com/samples/elseif.asp en
http://www.asp101.com/samples/viewasp.asp?file=elseif.asp
 

Bijlagen

  • tijden afronden.zip
    13,3 KB · Weergaven: 32
Laatst bewerkt:
Helaas is je query beschadigd, als ik deze open wordt access afgesloten.

In een van je eerste posts probeer je een geneste iif functie te maken. Dit kan, maar niet met een else if. Een geneste if ziet er als volgt uit:

IIF(voorwaarde1;resultaat1;IIF(voorwaarde2;resultaat2;IIF(voorwaarde3;resultaat3;IIF....)))...

Dat is wel te verwerken in een query. Houdt er echter rekening mee dat een IIF een van de traagste operatoren in een query is. Als je problemen krijgt met performance dan ligt dat waarschijnlijk daaraan.

Ik hoop dat je hier wwer iets verder mee komt. Ander zien we de DB wel weer verscijnen maar dan zonder corrupte query ;)


Grtz,
 
niet beschadigd.

Ik heb de database zojuist hier nog gedownload maar ik kan alles in de database openen.
 
Geen IF etc

Beste Resi,

Je hebt geen IF's nodig. Gewoon beetje spelen met cijfers. Het afronden gebeurt met de functie INT(). Werken met IF alleen als nodig is. En dat is hier niet nodig.

Ik maakte fout met functie TIME(). Rest klopte aardig.

Plaats volgende SQL-instructie maar in een query. Veld in tabel heet hier [dtmTijd]. Formule en resultaat zie je ook in bijgaande afbeelding.

SELECT tblTijdAfronden.lngIDan, tblTijdAfronden.dtmTijd,
Hour([dtmTijd]) & ":" & (Int(Minute([dtmTijd])/15)+1)*15 & ":" & Second([dtmTijd]) AS dtmAntwoord
FROM tblTijdAfronden;

Essentie is dus:
(Int(Minute([dtmTijd])/15)+1)*15

Misschien heb je 1 IF nodig, als de berekening in minuten op 60 uitkomt. Want dan gaat uur 1 omhoog en is minuten 0:
IIf(Int(Minute([dtmTijd])/15)+1=4;Hour([dtmTijd])+1 & ":00:" & Second([dtmTijd]);Hour([dtmTijd]) & ":" & (Int(Minute([dtmTijd])/15)+1)*15 & ":" & Second([dtmTijd]))
 

Bijlagen

  • formule.jpg
    formule.jpg
    41,1 KB · Weergaven: 83
Laatst bewerkt:
Re: Geen IF etc

Geplaatst door femda-punt-com
Beste Resi,

Je hebt geen IF's nodig. Gewoon beetje spelen met cijfers. Het afronden gebeurt met de functie INT(). Werken met IF alleen als nodig is. En dat is hier niet nodig.


Ik heb aan de hand van het antwoord van beheer25 de formule gemaakt deze werkt goed alleen heb ik hier inderdaad het probleem dat als de minuten groter zijn dan 53 en kleiner of gelijk aan 0 dat deze wel netjes afgrond wordt naar 0 maar het uur blijt gelijk. dus er zou een uur bij opgeteld moeten worden.


Misschien heb je 1 IF nodig, als de berekening in minuten op 60 uitkomt. Want dan gaat uur 1 omhoog en is minuten 0:
IIf(Int(Minute([dtmTijd])/15)+1=4;Hour([dtmTijd])+1 & ":00:" & Second([dtmTijd]);Hour([dtmTijd]) & ":" & (Int(Minute([dtmTijd])/15)+1)*15 & ":" & Second([dtmTijd])) [/B]

Ik heb deze query natuurlijk ook uitgeprobeerd en ik krijg ook het resultaat te zien. Er zit een fout in. 14 en kleiner is hier 15. 15 tot 29 is 30 etc etc. dat klopt dus niet. Wel worden de uren hier netjes afrond. Als ik dat in mijn formule kan verwerken ben ik er al.

Zie bijlage.
 

Bijlagen

  • tijden afronden1.zip
    34,1 KB · Weergaven: 28
Welke access versie heb je? Als ik de query open klapt ie er weer uit. :(


Grtz,
 
Versie

Het is versie 2000. Helaas is het me nog niet gelukt om de query zo aan te passen dat ook het uur goed wordt weer gegeven.
 
Laatst bewerkt:
Wie helpt verder

Het grootste gedeelte klopt nu. Alleen bij de ene formule klopt de afronding van de minuten niet. Bij de andere formule klopt het uur niet als de minuten tussen 53 en 59 liggen.

Wie heeft de finale oplossing :D
 
Beide voorbeelden staan in de database

Men had eerder aangeven dat als men de query minuten opende dat de database automatisch afsloot. Dit had ik net ook omdat ik deze database op een andere pc openende omdat mijn eigen pc effe stuk is. Mocht het weer voorkomen dan kun je de query effe kopieren en plakken. Dit werkte voor mij ook.
 

Bijlagen

  • tijden afronden 13-07.zip
    20,4 KB · Weergaven: 39
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan