Preben J skrev:
> Det virker ellers fint nok, men når sekunderne når op omkring et eller
> andet "loft", så får jeg flg. error på,
> Response.Write "<b>UpTime:</b> " & FormatDateTime(TimeSerial(0, 0,
> rs("server_uptime")), 4)
>
> ------------Error begin----------
> Microsoft VBScript runtime error '800a0006'
> Overflow: '[number: 39754]'
> \PAGES\../default.asp, line 35
> ------------Error End------------
>
> Jeg har så fundet flg. men kan ikke se mig ud af hvordan jeg får det til
> at virke, er der en der kan "oversætte"?
>
> Cause: cINT limitation causes this error. The range of numbers that cINT
> can convert is between -32,768 to 32,767
> Solution: Use INT() if possible.
Ja, det er tilsyneladende rigtigt.
Brugen af Int i stedet for CInt er dog hvis man vil afrunde et kommatal,
der er større end 32767 til et heltal. Det er ikke helt det der er
problemet her, omend begrundelsen er den samme...
I dokumentationen for TimeSerial [1] (som jeg ikke lige læste ;) ), står:
"However, if any single argument is outside the range -32,768 to
32,767, [...] an error occurs."
ASP/VBS arbejder med flere datatyper som du sikkert ved (fx heltal,
strenge, dato/tid, kommatal). Der er dog to typer at heltal, Integer og
Long. Integer løber imellem -32,768 og 32,767 og er åbenbart det der
forventes af TimeSerial. Long bruges til større tal.
Vores problem er så at der er 86400 sekunder på et døgn [2], så vi kan
ikke bare gå fra antal sekunder til en tid vha TimeSerial. Der er dog
kun 1440 minutter, så vi skriver bare:
FormatDateTime(TimeSerial(0, rs("sekunder") \ 60, 0), 4)
Dvs vi beregner antal minutter (rs("sekunder") \ 60) og sætter dem ind
på minut-pladsen.
[1]
<URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcttimeserial.asp>
[2] Jeg har antaget at du kun skal vise tidspunkter på max et døgn, da
du vil udskrive det som hh:mm. Hvis du skal vise længere tidsrum så skal
det måske rettes yderligere til...
PS. Du har sikkert ikke problemet, men hvis du bruger MS Access, så skal
din felttype være sat til Langt Heltal, hvilket svarer til Long i
ASP/VBS, mens Heltal svarer til Integer.
Så du har sikkert allerede en gang taget stilling til hvor stort et tal
feltet sekunder kan have :)
mvh Torben