Just nu i M3-nätverket
Gå till innehåll

Total Tid


Neee!!

Rekommendera Poster

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?!?!

 

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

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

 

Länk till kommentar
Dela på andra webbplatser

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..

 

:(

 

Länk till kommentar
Dela på andra webbplatser

'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 :)

 

Länk till kommentar
Dela på andra webbplatser

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...

 

Länk till kommentar
Dela på andra webbplatser

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 :)

 

 

 

Länk till kommentar
Dela på andra webbplatser

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? ;)

 

Länk till kommentar
Dela på andra webbplatser

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!!]

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

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

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

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>

 

Länk till kommentar
Dela på andra webbplatser

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

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

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 ?

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...