Avatar billede yamino Nybegynder
11. oktober 2005 - 18:44 Der er 11 kommentarer og
1 løsning

Ligge minutter sammen

Hey alle.

I min database har jeg en masse poster. Fælles for disse poster er, at alle har feltet TID udfyldt med min:sec. Altså:

ID - PAKKE - TID

1 -  4  - 3:14
2 -  5  - 2:17


TID er defineret som 'text'.

Nu vil jeg gerne have lagt TID i disse poster sammen, så jeg får summen i minutter:sekunder, i dette tilfælde: 5:31.

Any suggestions?

^y
Avatar billede driis Nybegynder
11. oktober 2005 - 18:58 #1
Hvis du bruger CDate på tiden først, kan du blot ligge datoerne sammen. Dernæst kan du bruge DatePart til at formatere som du har lyst, f.eks.:

<%
Dim t1, t2,s
t1 = CDate("00:03:33")
t2 = CDate("00:02:03")
total = t1 + t2
%>
Der er <%=DatePart("n",total)%>:<%=DatePart("s",total)%> minutter i alt.

Se også
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctdatediff.asp
Avatar billede plx Nybegynder
11. oktober 2005 - 19:08 #2
Set rs = Conn.Execute("select SUM(Right(TID, 2)) as s, SUM(Left(TID, Len(TID)-3)) as m, (s Mod 60) as sekunder, (m+Int(s/60)) as minutter, (minutter&':'&sekunder) as total from mintabel")

Response.Write rs("total")

jeg afviser ikke, at sqlen kan gøres pænere
Avatar billede yamino Nybegynder
11. oktober 2005 - 19:31 #3
driis,

Jeg har prøvet at rode lidt med dit forslag og fik følgende kode:

    strSamlet = Cdate(rs("TID"))

    Do Until rs.EOF
      strSamlet = strSamlet + Cdate(rs("TID"))
    rs.MoveNext
    Loop

Det giver bare et lidt skævt resultat. I dette eks. var der 64 poster, med tiden omkring 1:35 i snit, altså 1 minut og 35 sekunder.

Jeg udskrev resultatet med:

    <%=DatePart("n",strSamlet) & ":" & DatePart("s",strSamlet)%>

Resultat blev: 46:00

Hvad gik galt? :)
Avatar billede driis Nybegynder
11. oktober 2005 - 19:38 #4
Mon ikke der er gået over en time ?
<%=DatePart("h",strSamlet) & ":" & DatePart("n",strSamlet) & ":" & DatePart("s",strSamlet)%>
Avatar billede yamino Nybegynder
11. oktober 2005 - 19:45 #5
Nej, stadig samme halvsjove resultat :)

Hurtig hovedregning så du har noget at gå efter:

Jeg har et regnskab hvor kun 4 produkter ligges sammen. De skal tilsammen give 19:23 (19 min, 23 sek)

Disse produkter ligger i tabel "statistik", og feltet med tiderne hedder "TID" og er i text format.

Produkt 1: 3:10
Produkt 2: 6:53
Produkt 3: 4:45
Produkt 4: 4:35
Avatar billede yamino Nybegynder
11. oktober 2005 - 19:46 #6
Lad mig dertil tilføje, at de tider er lagret i databasen som de står, ikke som 00:03:10, men som 3:10
Avatar billede yamino Nybegynder
11. oktober 2005 - 19:54 #7
Ahh, jeg tror jeg ved hvorfor.

Prøvede at udskrive en post med Cdate(rs("TID")). Posten er gemt som 5:27 (5 min, 27 sek), men udskriften med Cdate bliver til 5:27:00 (5 timer, 27 min, 0 sek).

Any suggestions? Selv ville jeg mene at jeg kørte en SQL query som lige indsatte 00: foran alle poster i TID, og så prøvede med dit forslag igen, men hvis man kan kode sig ud af det ville det være fint.
Avatar billede driis Nybegynder
11. oktober 2005 - 19:55 #8
Du kan jo bare:

Do Until rs.EOF
    strSamlet = strSamlet + Cdate("00:" & rs("TID"))
    rs.MoveNext
Loop
Avatar billede yamino Nybegynder
11. oktober 2005 - 20:05 #9
Det giver i førnævnte eksempel med de 4 produkter en samlet tid på 2:41:42
Avatar billede yamino Nybegynder
11. oktober 2005 - 20:15 #10
Endnu en opdagelse :P

strSamlet = Cdate(rs("TID"))

    Do Until rs.EOF
      strSamlet = strSamlet + Cdate(rs("TID"))
    rs.MoveNext
    Loop

I den kode har jeg allerede lagt første tid ind i strSamlet inden loop'et. Der manglede et rs.MoveNext før 'Do'.

Tak for hjælpen :)
Avatar billede yamino Nybegynder
11. oktober 2005 - 20:23 #11
Endnu et spørgsmål:

Hvis nu jeg har totalen som hedder 00:19:23 og gerne vil have gennemsnitstiden og dividerer med 4 som er antallet af produkter - hvordan gør jeg det?
Avatar billede driis Nybegynder
11. oktober 2005 - 20:48 #12
Der vil det mest nærliggende nok være at konvertere til sekunder med DateDiff, dividere med 4, og konvertere tilbage med DateAdd.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester