20. marts 2003 - 20:57Der er
10 kommentarer og 1 løsning
Eagleeye (og andre...) hjælp med resten af beregningen
Jeg har tigligere fået hjælp til en tidsberegning v.h.a. DateDiff. Den ser således ud:
<% function sTimeCalc(StartTime, FinishTime) Dim diff, mins, hours, secs diff = datediff("s",StartTime,FinishTime) 'set the minutes ignoring the remaining fraction hours = int(diff / (60*60)) ' set the minutes by using the remaining fraction and multiplying by 60 i.e., .5 * 60 = 30 mins = Int(60*(diff / (60*60) - hours)) secs = Int(diff - ((60*60)* hours) - (60 * mins)) hours = Right("0" & hours,2) mins = Right("0" & mins,2) secs = Right("0" & secs,2) sTimeCalc = hours & ":" & mins & ":" & secs end function %>
i min kode har jeg lavet dette: <% sqltid="SELECT * From tidsforbrug Where opgavenr = '" & request("ID") & "' order by id asc" set rstid = conn.execute(sqltid) %> <% do while not rstid.EOF %> <% If rstid("eventting") = "START " Then eventstart = rstid("tid") tidsforbrug = "" Else eventstop = rstid("tid") tidsforbrug = sTimeCalc(eventstart, eventstop) %> <% end if %> <%rstid.movenext%> <%loop%>
<%Response.write tidsforbrug%>
Mit problem er nu at den godt nok beregner tiden mellem start og stop... MEN, men men det er kune den sidste start/stop i tabellen, der bliver beregnet. Da start/stop kan forekomme flere gange skal jeg derfor har lavet en udregning, der viser den totale forskel mellem alle start/stop. Forvirret? - o.k. en lidt bedre forklaring: I en tabel har jeg en eventting, der enten kan være start eller stop efterfulgt af et timestamp. jeg skal have beregnet forskellen på start & stop | start & stop | start & stop (altså den tid, der er mellem hver start og stop. Og til sidst skal de mellemliggende tider ligges samen.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
En hurtig metode: Hvis du kun skal udskrive forskellene kan du gøre det inde i loopet, og samtidigt tælle sammen i en anden variabel.
Det forudsætter selvfølgelig at du hele tiden har par af start og stop i den rigtige rækkefølge.
<% sqltid="SELECT * From tidsforbrug Where opgavenr = '" & request("ID") & "' order by id asc" SamletForbrug=0 set rstid = conn.execute(sqltid) do while not rstid.EOF If rstid("eventting") = "START " Then eventstart = rstid("tid") tidsforbrug = "" Else eventstop = rstid("tid") tidsforbrug = sTimeCalc(eventstart, eventstop) SamletForbrug=SamletForbrug+tidsforbrug Response.write "<br>" & tidsforbrug end if rstid.movenext loop Response.write "<br>" & SamletForbrug %>
jeg kan sagtens leve med at den samlede tid returneres i par, men der skal stadig være forbehold for at den sidste post kan være "start". Altså så den smalede tid beregnes fra og med den sidste "stop"
Ny funkion til udskrift af tiden, som bare skal have et antal sekunder. Og den "fodres" så selvfølgelig lidt anderledes.
<% function strSecondFormat(diff) Dim mins, hours, secs diff = 'set the minutes ignoring the remaining fraction hours = int(diff / (60*60)) ' set the minutes by using the remaining fraction and multiplying by 60 i.e., .5 * 60 = 30 mins = Int(60*(diff / (60*60) - hours)) secs = Int(diff - ((60*60)* hours) - (60 * mins)) hours = Right("0" & hours,2) mins = Right("0" & mins,2) secs = Right("0" & secs,2) sTimeCalc = hours & ":" & mins & ":" & secs end function
sqltid="SELECT * From tidsforbrug Where opgavenr = '" & request("ID") & "' order by id asc" SamletForbrug=0 set rstid = conn.execute(sqltid) do while not rstid.EOF If rstid("eventting") = "START " Then eventstart = rstid("tid") Else eventstop = rstid("tid") TimeDif=datediff("s",eventstart ,eventstop) SamletForbrug=SamletForbrug+TimeDif tidsforbrug = strSecondFormat(TimeDiff) Response.write "<br>" & tidsforbrug end if rstid.movenext loop Response.write "<br>" & strSecondFormat(SamletForbrug) %> Det ser lidt mere rigtigt ud.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.