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

Access och summera tider


Martassen

Rekommendera Poster

Jag har behov av att summera tider från konserter. Alltså timmar, minuter och sekunder. Hittar ingen lösning när summan överstiger 23:59:59, ett dygn alltså.

Är det möjligt?

Länk till kommentar
Dela på andra webbplatser

Cege Anderson

Hej

Finns ett gammalt ärende 146649 här i forumet där jag svarat

 

//eforum.idg.se/topic/146649-summera-tid/

 

// Cege

Länk till kommentar
Dela på andra webbplatser

Låt säga att jag har tblkonsert med följande fält. Se bifogad bild.

 

Nu vill jag se totala tiden som varje band har spelat. Exempelvis så har Kiss spelat 12 timmar, 40 minuter och 40 sekunder.

 

Hur gör jag då om jag vill se totala tiden som varje band har spelat?

 

Bör jag istället 2 fält(Startfält och slutfält) som visar start och slut eller är det ok att ha ett fält som visar tiden i timmar,minuter och sekunder? (Fältet "Tid").

 

Länk till kommentar
Dela på andra webbplatser

Låt säga att jag har tblkonsert med följande fält. Se bifogad bild.

 

Nu vill jag se totala tiden som varje band har spelat. Exempelvis så har Kiss spelat 12 timmar, 40 minuter och 40 sekunder.

 

Hur gör jag då om jag vill se totala tiden som varje band har spelat?

 

Bör jag istället 2 fält(Startfält och slutfält) som visar start och slut eller är det ok att ha ett fält som visar tiden i timmar,minuter och sekunder? (Fältet "Tid").

 

Det är ok att ha ett fält som du har det. Ett fält av typen Time kan aldrig ha högre värde än 23:59:59, nästa steg är 1 dag. Anledningen är att datum och tid är samma typ, där datum är heltalsdelen och tid är decimaldelen.

 

Men, det går att göra som du vill, men resultatet kommer att bli en sträng.

 

Gör en ny modul och lägg denna koden där.

 

Function LongTime(ByVal tid As Double) As String
   dagar = Int(tid)
   tid = tid - dagar
   timmar = Int(tid / (1 / 24))
   tid = tid - (timmar * (1 / 24))

   LongTime = CStr(dagar * 24 + timmar) & Right(CDate(tid), 6)
End Function

 

Använd sen funktionen precis som vilken annan funktion som helst:

 

SELECT LongTime(sum(tid)) as TotalTid FROM koncerter

Länk till kommentar
Dela på andra webbplatser

Jag började plocka ut med timme(), minut() och sekund() och grupperade sedan frågan men det verkade inte bli så bra eftersom den summerade timmarna, minuterna,sekunder osv. Då ska jag prova din kod om ett litet tag.

 

Av ren nyfikenhet:

 

Om jag istället skulle ha fälten start och slut.

Därefter skapar jag en tom kolumn i frågan och skriv slut-start.

Då får jag nåt slags decimaltal. Vad visar detta decimaltal?

 

Om jag nu ska få fram totala tiden mellan start och slut ska jag då välja kort tidformat bara ifrågan? Se bifogad bild.

 

Länk till kommentar
Dela på andra webbplatser

 

 

Om jag istället skulle ha fälten start och slut.

Därefter skapar jag en tom kolumn i frågan och skriv slut-start.

Då får jag nåt slags decimaltal. Vad visar detta decimaltal?

 

Decimaltalet visar tiden i decimalform, det till vänster om kommat är antal dagar och det till höger är tiden (upp till 0.999999999, som är 23h 59m 59s 999ms).

 

Om jag nu ska få fram totala tiden mellan start och slut ska jag då välja kort tidformat bara ifrågan? Se bifogad bild.

 

Kort tidsformat kan aldrig visa större tal än 23:59:59.

Länk till kommentar
Dela på andra webbplatser

och eftersom Kort tidsformat ej kan visa större tal än 23:59:59 så måste jag använda din kod? Eller?

 

Måste och måste... Jag kan ju inte tvinga dig, men koden fungerar och det finns (vad jag vet) inget inbyggt i Access som gör samma sak.

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