skulle det ikke have: været minutter, ".") (punktum i stedet for komma) ?
prøv at udskrive indholdet af minutter: response.write "minutter: *" & minutter & "*"
jeg bruger * for at se om der står noget i minutter.. hvis der ikke gør, kommer der til at står "**".. på den måde kan man også sikre sig at response.write bliver udført..
minutter = cint(minutter) / cint(60) Her er minutter et tal. minutter=Cstr(minutter) nu er det en streng, og nu kan du benytte split-funktionen. Decimalpunktummet vi være blevet til et komma nu. så med minutter=minutter,",") vil minutter(1) være decimal-delen, og det vil være en tekststreng. hvis f.eks du startede med at minutter var 5.12345 så vil Cstr(minutter) være "5,12345" og split(minutter,",") vil bestå af to dele minutter80)="5" og minutter(1)="12345"
Du fik ikke en fejl ved minutter, men du opnår ikke det, du ønsker, med din split-ordre.
Men prøv lige at fortælle, hvad det egentlig er du vil lave. Det, jeg tror du vil lave, kan laves fiksere.
Hvor får du timer ind i billedet? Det kan man ikke se af det, du skriver.
den fejl jeg får: This array is fixed or temporarily locked: 'minutter' altså uden jeg bruger det der Cstr ellers så siger den at det ikke er korrekt at benytte Cstr
OK, nu forstår jeg, hvad du mener med timer. Det er formentlig funktionen Timer(), som angiver en tid i sekunder. Har jeg ret? Ønsker du så at få det lavet om til hele timer, minutter og sekunder?
strSQL = "Select * From Brugere Where Bruger = '" & session("bruger") & "'" set rs = Conn.Execute (strSQL)
'Del timer og minutter op på hver side af : tid = split(session("sidstlog"), ":") regtid = split(rs("Onlinetid"), ":") nu = split((FormatDateTime(Now, vbShortTime)), ":") 'træk den overflødige tid fra tid(0) = cint(nu(0)) - cint(tid(0)) tid(1) = cint(nu(1)) - cint(tid(1)) 'Beregn nytid oveni registreret tid if minutter < 0 then tid(1) = cint(tid(1)) + cint(60) tid(0) = cint(tid(0)) - cint(1) end if strtimer = clng(tid(0)) + clng(regtid(0)) minutter = clng(tid(1)) + clng(regtid(1)) 'hvis minutter (tid1) er en minus værdi omregn til timer
'Hvis minutter er mere end 60 læg 1 oveni timer if minutter => cint(60) then minutter = cint(minutter) / cint(60) minutter = Cstr(minutter) minutter = split(minutter, ",") strtimer = clng(timer) - cint(1) minutter = Left(minutter(1), 2) elseif minutter(1) = 0 then minutter(1) = "0" end if
Response.Write "du var på i " & tid(0) & " timer, og " & tid(1) & " minutter." strSQL = "Update Brugere set " strSQL = strSQL & "Onlinetid= '" & strtimer & ":" & minutter & "' " strSQL = strSQL & " Where Bruger = '" & session("bruger") & "'" Conn.Execute strSQL
det var ikke session.lcid jeg spurgte om - såmen bare hvad du gemte af tid (men går ud fra at det er tt:mm:ss?
i stedet for alle de underlige underlige udregninger du laver - hvorfor bruger du så ikke bare (som jeg også foreslog i det sidste spm.) at benytte funktionen datadiff;
Days from today: " & DateDiff("d", Now, theDate)
så kan du bare tage minutter (n) i stedet for dage og benytte det - det lyder meget mere optimalt
det er netop ikke mere besværligt - hvis du gemmer antal sekunder kan du let tage modulus af det (= antal timer) og den resterende mængde er sekunder.
Det er betydeligt sværere at gemme 2:03 og lave regnestykker med det (fx 2:03 + 0:57) end det er at lave regnestykker med reelle tal (fx 123 + 57). Du slipper altså for en masse split (som måske alligevel ikke giver noget resultat), du slipper for at arbejde med landekodeting samt danne en masse variabler som du er i gang med...
det er da netop split jeg IKKE slipper for... gider du kigge på en skærm hvor der står: hej bruger, du har været på i 24,1238561233 timer og 221,12356 minutter
faktisk behøver du ikke engang at bruge modulus - du kan nøjes med at dividere dine sekunder men X for timer uden beregning af decimaltal, og derefter dividere den resterende mængde med med Y for minutter også uden beregning af decimaler. fx;
jamen jeg ved hvor det går galt, jeg kan bare ikke finde en måde at rette det på se på det her: 'Hent data uredigeret regtid = split(rs("Onlinetid"), ":") Min = DateDiff("n", session("sidstlog"), Now) 'Udregninger strTimer = Min \ 60 plusTimer = strTimer + regtid(0) Minutter = Min-60*plusTimer plusmin = Min + regtid(1)
findes der ikke en funktion som auto matisk kan omformatere oplysninger til tider hvis man bare giver det et tal som 2131636, som datediff jo f.x udgiver
du svarer ikke på det jeg spørger om... du har gang i et eksempel hvor du siger at du for et helt usandsynlige høje tal, og det er det eksempel jeg tager udgangspunkt i.
hvad har du af tal i de forskellige variabler undervejs i den udregning?
du siger at du får nogle urimelig højre tal efter at du har været online i 1 minut... så må du da udskrive nogle variabler undervejs så du kan se hvor det går galt henne!
de variabel-værdier du får udskrevet kan du prøve at poste her så jeg kan se hvilke tal du regner med i stedet for at jeg kun har resultatet at gå ud fra
det eneste problem er ved linjen med ****, for det er klart at når plustimer er over 0 og plusmin er 3 så hedder det jo 3-60*1 og det gir -57 så hvordan laver jeg så den kan blive normal, håber i forstår hvad jeg mener
regtid = split(rs("Onlinetid"), ":") Min = DateDiff("n", session("sidstlog"), Now) < her får vi gjort forskellen op i minutter som gir f.x 67 'Udregninger plusmin = Min + regtid(1) < her plusser vi 67 oveni den tid der i forvejen er strTimer = Min \ 60 < her deler vi de nye minutter med 60 plusTimer = plusmin \ 60 < her deller vi sammenlagte minutter med 60 plusTimer = plusTimer + regtid(0) < resultatet ovenover + de registrerede timer plusmin = plusmin-60*plusTimer < det færdige resultat af minutter Minutter = Min-60*strTimer < det nye minuttal 'Færdige resultat SamlTimer = plusTimer SamlMinutter = plusmin
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.