Just nu i M3-nätverket
Jump to content

Total Tid


Neee!!

Recommended Posts

Hej!

Jag hämtar en tid i ett fält i en databas.

Presenterar ett gäng tider. Problemet blir när jag ska räkna ut det totala tiden så slår den om på 1 efter 24 timmar.. Fast igentligen ville jag ha 25 timmar.

Lite kod:

 

'Hämtar tiden

<%=FormatDateTime(rsSub(5),vbshorttime)%>

 

'Räknar ihop totalen i loopen

TidTot = TidTot + rsSub(5)

 

'Summeringen:

<%=FormatDateTime(TidTot,vbshorttime)%>

 

Hjälp mig?!?!

 

Link to comment
Share on other sites

Ta fram antal timmar i ditt datum genom funktionen Hour(date), lägg sen ihop de antalet timmar i en variabel..

 

nTim = nTim + Hour(date)

 

nåt sånt.. .:)

 

[EDIT]

Kan varit lite snabb i mitt svar. Ovanstående ger dig timantalet i det datum du har i rsSub(5), men du kanske inte ville lägga ihop typ 17, 23, 04 osv...?

[/EDIT}

 

/Jenny

 

[inlägget ändrat 2003-11-10 09:59:43 av Jenny R]

Link to comment
Share on other sites

Då pratar du helt plötsligt minuter... ;) Du får speca ordentligt vad du ska ha..

 

Jag skulle gjort så att jag omvandlat allt till minuter från början, dvs tagit Hourfuntktionen, tagit fram antalet timmar, multiplicerat med 60, tagit fram antal minuter genom Minute(date) funktionen, lagt till de i min totala variabel.

 

När allt loopats klart skulle jag omvandlat minuterna till timmar, dvs x/60 = antalTimmar

x Mod antalTimmar = antal minuter.

 

/J

 

Link to comment
Share on other sites

Hmm..

Jag har i databas fältet Datum/tid, kort tidsformat.

Hur gör jag för att få det hela o funka.. Hur jag än vrider o vänder på allt så får jag det inte o funka..

 

:(

 

Link to comment
Share on other sites

'Här visas resultatet per post

<td bgcolor="<%=bgcolor%>"><%=hour(rsSub(5))%></td>

 

'Här kommer loopen

TidTot = TidTot + hour(rsSub(5))

rsSub.movenext

loop

 

Totalen:

<b>SUMMA:&nbsp;<%=TidTot%></b>timmar

Slut

Tjolahopp :)

 

Link to comment
Share on other sites

Du har ju inte lagt till funktionen med minuter som jag beskrev i förra inlägget.

'loopa

Do

nTotAntalMin = nTotAntalMin + (Hour(date)*60)

nTotAntalMin = nTotAntalMin + Minute(date)

Loop

 

'presentera summa

nAntalTim = cInt(nTotAntalMin/60)

nAntalMin = nTotAntalMin Mod nAntalTim

 

<b>SUMMA:&nbsp;<%=nAntalTim%>&nbsp;<%=nAntalMin%></b>timmar

 

Definitivt värt poäng...

 

Link to comment
Share on other sites

Hmm Igen.. :)

 

08.00

02:00

07:00

08:00

03:25

 

Borde bli totalt 28.25 timmar..

 

Nu får jag Summa 25 timmar

Kod:

Set Mytime = rsSub(5)

 

<td bgcolor="<%=bgcolor%>"><%=FormatDateTime(Mytime,vbshorttime)%></td>

 

<%

nTotAntalMin = nTotAntalMin + (Hour(Mytime)*60)

nTotAntalMin = nTotAntalMin + Minute(Mytime)

 

 

rsSub.movenext

loop

rssub.close

nAntalTim = cInt(nTotAntalMin/60)

nAntalMin = nTotAntalMin Mod nAntalTim

%>

<b>SUMMA:&nbsp;<%=nAntalMin%></b>

 

Har du tålamod :)

 

 

 

Link to comment
Share on other sites

Ja, du får 25 för du skriver bara ut de 25 minuterna... du måste ju skriva ut även antaltimmar...

 

<b>SUMMA:&nbsp;<%=nAntalMin%></b>

 

Kan det vara så enkelt? ;)

 

Link to comment
Share on other sites

Något blir knas i uträkningen..

Totalt 66,9 timmar ??

Vill ju ha rätt timmantal och minuter..

 

Skumt?

hmmm kanske ska vara 66 timmar och 9 minuter då

[inlägget ändrat 2003-11-10 12:08:11 av Neee!!]

Link to comment
Share on other sites

Ja, jag får det också till 15 timmar och 23 minuter (inte 15.23 som istället blivit 15 timmar och 13.8 minuter)

 

Testa att istället för Mod (som *hrm* ger dig 8 - fel tanke av mig) göra så att du drar ifrån :

 

nAntalMin = nTotAntalMin - (nAntalTim * 60)

 

Allså, först måste du ha heltalet på antalet timmar (tanken var att cInt innan ska ge dig heltalet, kolla så att avrundningen inte blir fel!).

Sen får du räkna tillbaka hur många minuter de timmarna var (nAntalTim *60) och sen dra ifrån den summan från hela minutsumman - vilket borde ge dig resterande minuter.

 

 

Ang 66.9...

* glöm inte nolla variablerna innan loopen

 

[inlägget ändrat 2003-11-10 12:20:06 av Jenny R]

Link to comment
Share on other sites

Låter skumt.. är du säker på att den räknar med alla värden som du skriver i texten här?

 

Kan du inte efter varje addering lägga upp en alertbox/skriva ut på skärmen som talar om vilka värden som används?

 

Skriv ut din rssub(5), skriv även ut MyTime (efter tilldelningen), skriv även ut nTotAntalMinuter, skriv ut vad hour(MyTime) och Minute(MyTime).

 

Lägg upp en alertbox:

 

'avbryt asp-koden, börja om efter </script>

%>

<script language="javascript">

alert("bla bla bla")

</script>

<%

 

För att skriva ut asp-värden i alertboxen, använd vanliga <%= varibel %> innanför citationstecknen.

Ny rad i javascriptet = \n

 

 

 

 

Link to comment
Share on other sites

Nej... Får ingen ordning på det hela... :(

 

Här är koden nu:

 

<td bgcolor="<%=bgcolor%>"><%=FormatDateTime(Mytime,vbshorttime)%></td>

 

</tr>

<%

 

totTim = totTim + hour(Mytime)

nTotAntalMin = nTotAntalMin + (Hour(Mytime)*60)

nTotAntalMin = nTotAntalMin + Minute(Mytime)

 

If A = 1 Then A = 0 Else A = 1

rsSub.movenext

loop

rssub.close

nAntalTim = cInt(nTotAntalMin/60)

nAntalMin = nTotAntalMin Mod nAntalTim

nAntalMin = nTotAntalMin - (nAntalTim * 60)

%>

 

<tr bgcolor="#c0c0c0">

<td colspan="3" bgcolor="#619561">

<font color="#FFFFFF"><b>SUMMA:&nbsp;<%=totTim%>:<%=nAntalMin%></b> </font>

 

Link to comment
Share on other sites

1. TA BORT variabeln totTim som vi inte behöver då vi istället räknar antal minuter.

 

2. VAD är "If A = 1 Then A = 0 Else A = 1" som dessutom saknar "End if"??

 

3. TA BORT "nAntalMin = nTotAntalMin Mod nAntalTim

" som vi redan konstaterade var felaktig

 

Jobba enligt principen...

 

*kör databasfråga

*nolla variabler

*loopa genom rad, för varje rad, räkna ut nTotAntalMin (så som du gör idag)

*efter loop - räkna ut antal timmmar och minuter (genom nAntalTim och nAntalMin - ej Mod-versionen)

*presentera

 

Link to comment
Share on other sites

68 minuter ÄR ju 1 timme och 8 minuter, så det hade varit rätt.

 

Om det från din databas kommer 0.68 så är det nog fel i nedlagringen av tiden..

 

Om det kommer 1.08 (=68min) från databasen så skall:

 

nTotAntalMin = nTotAntalMin + (Hour(Mytime)*60) => (Hour(Mytime)*60) = 60

 

nTotAntalMin = nTotAntalMin + Minute(Mytime) => Minute(Mytime) 8

 

Delsumma: nTotAntalMin = 68

 

Nästa rad i databasen ger 2.0

 

nTotAntalMin = nTotAntalMin + (Hour(Mytime)*60) => (Hour(Mytime)*60) = 120

Delsumma: nTotAntalMin = 68+120 = 188

 

nTotAntalMin = nTotAntalMin + Minute(Mytime) => Minute(Mytime) = 0

Delsumma: nTotAntalMin = 188 + 0 = 188

 

OSV...

 

VAR BLIR DET FEL HOS DIG?? (dvs, inte summan, utan nånstans måste värdena bli felaktiga/felaktigt beräknade i loopen.

 

Link to comment
Share on other sites

nTotAntalMin = nTotAntalMin + Minute(Mytime)

nAntalTim = cInt(nTotAntalMin/60)

nTotAntalMin = nTotAntalMin + (Hour(Mytime)*60)

 

Detta ger rätt i minuter

 

01:08

02:00

 

Ger 188 minuter..

Hur gör jag nu för att omvandla 188 minuter till

timmar? DVS Totalt: 03:08 ?

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...