Avatar billede Jman Praktikant
04. september 2002 - 16:45 Der er 40 kommentarer og
1 løsning

Datediff

Hvorfor giver denne et forkert regnestykke ?
<%
If rsoracle("event") = "START" Then
  eventstart = rsoracle("timestamp")
Else
  eventstop = rsoracle("timestamp")
  hours = datediff("h", eventstart, eventstop)
  min = datediff("n", eventstart, eventstop)
  sek = datediff("s", eventstart, eventstop)

  totalhours = totalhours + hours
  totalmins = totalmins + min
  totalseks = totalseks + sek
 
If hours = 0 Then
    Response.Write min & " minutter"
  Else
    Response.Write hours & " time(r) og " & min & " minutter"
  End If
End If
%>

EKSEMPEL:
eventstart = 30-08-2002 08:53:05
eventstop = 30-08-2002 09:01:11

resultat = 1:08

Selv om den egentlig kun skulle vise 8 minuter
Avatar billede eagleeye Praktikant
04. september 2002 - 16:58 #1
Jeg har en function som kan regen tiden ud mellem to klokke slet. Problemmet med DataDiff er den tager tiden mellem to tidspunker i hele antal af det man angiver.. Så den hvis der er en time mellem to tidspunkter vil vil man få 1 tilbage his man tjekker for timer, og 60 tilbage hvis man tjekker for minutter...:


Response.write TimeCalc(eventstart, eventstop)


function TimeCalc(StartTime, FinishTime)
Dim diff, mins, hours, secs
diff = datediff("s",StartTime,FinishTime)
hours = int(diff / (60*60))
mins = Int(60*(diff / (60*60) - hours))
secs = Int(diff - ((60*60)* hours) - (60 * mins))
hours = string(2-len(hours),"0") & hours
mins = string(2-len(mins),"0") & mins
secs = string(2-len(secs),"0") & secs

TimeCalc = hours & ":" & mins & ":" & secs
end function
Avatar billede eagleeye Praktikant
04. september 2002 - 16:59 #2
Den giver en time fordi den første er 08 og den anden er 09.
Avatar billede Jman Praktikant
04. september 2002 - 17:20 #3
hmm - kan ikke rigtigt får den sat ind i min kode - Kan du gøre som jeg ønsker på dette screendump: http://www.jman.dk/exempel2.htm ?

Så hæver jeg gerne til 200p.
Avatar billede Jman Praktikant
04. september 2002 - 17:24 #4
Der er lidt kode her:
<% If Request.Querystring ("avis") > "0" Then %>
<%
Set dboracle = CreateObject("ADODB.Connection")
strConn = "DSN=XXXXXXXX;Database=XXX;uid=XXX;pwd=XXX"
dboracle.Open strConn
strSQL = "Select * FROM SIDETID WHERE TEXT LIKE '%" & Request("avis") & "%' OR upper(TEXT) LIKE '%" & Request("avis") & "%' order by TEXT, Timestamp"
Set rsoracle = CreateObject("ADODB.Recordset")
rsoracle.Open strSQL, dbOracle
%>
<% if rsOracle.eof then %>
<h2><font align="center" color="#dd0000">Der er ingen sider, der matcher forespøgslen "<%=request("avis")%>"....prøv igen.</font></h2>
<% else %>

<table border="2" cellpadding="0" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" bgcolor="#FFFFFF">
  <tr>
    <tr>
    <td colspan="5">
    <h2 align="center">historik for region <%= Request("avis") %> bliver vist nu !!! </h1>
    </td>
    </tr>
    <tr>
      <td width="150" bgcolor="#E6E6D0"><h3 style="margin: 0 3">sidenavn</h3></td>
      <td width="150" bgcolor="#E6E6D0"><h3 style="margin: 0 3">dato &amp; tid</h3></td>
      <td width="40" bgcolor="#E6E6D0"><h3 style="margin: 0 3">handling</h3></td>
      <td bgcolor="#E6E6D0"><h3 style="margin: 0 3">udført på arbejdsstation:</h3></td>
      <td width="135" bgcolor="#E6E6D0"><h3 style="margin: 0 3">tidsforbrug:</h3></td>
    </tr>
<% do while not rsoracle.EOF %>
<%
If rsoracle("event") = "START" Then
  eventstart = rsoracle("timestamp")
Else
  eventstop = rsoracle("timestamp")
end if %>

    <tr>
          <td>
            <h4 style="margin: 0 3"><% =rsoracle("TEXT")%></h4>
          </td>
          <td>
            <h4 style="margin: 0 3"><% =rsoracle("timestamp")%></h4>
          </td>
          <td>
            <h4 style="margin: 0 3"><% =rsoracle("event")%></h4>
          </td>
          <td>
            <h4 style="margin: 0 3"><% =rsoracle("stationid")%></h4>
          </td>
          <td>
            <h4 style="margin: 0 3" align="right">
          </td>
    </tr>
<%rsoracle.movenext%>
<% loop %>

<% end if %>
    <%
    rsoracle.Close
    Set rsoracle = Nothing
    Set SQL = Nothing
    %>
  </table>
</div>
<%end if%>
</body>
</html>
<% if mode = "find" then
response.redirect "sideprod.asp?avis=" & Request.QueryString("avis")
end if %>
Avatar billede eagleeye Praktikant
04. september 2002 - 17:26 #5
Ok.. Jeg prøver lige at lave tabllen som jeg mener den skal være ;)

Du kan ligge function ned i bunden af din asp fil..
Avatar billede eagleeye Praktikant
04. september 2002 - 17:28 #6
med den skal kun udregne tiden hvis det er en STOP ?
Avatar billede Jman Praktikant
04. september 2002 - 17:32 #7
yeps -
Feltet event skifter mellem START og STOP (det er der en Xtension, der sørger for)
Og mellem de to events skal der udregnes tidsforbrug
Avatar billede Jman Praktikant
04. september 2002 - 17:35 #8
jeg er nødt til at smutte et par timer - hopper på igen i aften ..
Avatar billede eagleeye Praktikant
04. september 2002 - 17:37 #9
Ok.. så jeg har første klar men så tester jeg lidt lidt mere inden jeg kommer med koden.
Avatar billede eagleeye Praktikant
04. september 2002 - 18:06 #10
Hmm det var godt jeg lige prøve det inden jeg viser det, der var nogle fejl i det.... Dette skulle gerne virke, men det kan være det skal tilpasses lidt ?? eksvis er tiden opgivet med sekunder:


<table border="2" cellpadding="0" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" bgcolor="#FFFFFF">
  <tr>
    <tr>
    <td colspan="5">
    <h2 align="center">historik for region <%= Request("avis") %> bliver vist nu !!! </h1>
    </td>
    </tr>
    <tr>
      <td width="150" bgcolor="#E6E6D0"><h3 style="margin: 0 3">sidenavn</h3></td>
      <td width="150" bgcolor="#E6E6D0"><h3 style="margin: 0 3">dato &amp; tid</h3></td>
      <td width="40" bgcolor="#E6E6D0"><h3 style="margin: 0 3">handling</h3></td>
      <td bgcolor="#E6E6D0"><h3 style="margin: 0 3">udført på arbejdsstation:</h3></td>
      <td width="135" bgcolor="#E6E6D0"><h3 style="margin: 0 3">tidsforbrug:</h3></td>
    </tr>
<%
  totalTidsforbrug = 0
  do while not rsoracle.EOF %>
<%
If rsoracle("event") = "START" Then
  eventstart = rsoracle("timestamp")
  tidsforbrug = ""
Else
  eventstop = rsoracle("timestamp")
  tidsforbrug = TimeCalc(eventstart, eventstop)
  totalTidsforbrug = totalTidsforbrug + DateDiff("s",eventstart, eventstop)
end if %>

    <tr>
          <td>
            <h4 style="margin: 0 3"><% =rsoracle("TEXT")%></h4>
          </td>
          <td>
            <h4 style="margin: 0 3"><% =rsoracle("timestamp")%></h4>
          </td>
          <td>
            <h4 style="margin: 0 3"><% =rsoracle("event")%></h4>
          </td>
          <td>
            <h4 style="margin: 0 3"><% =rsoracle("stationid")%></h4>
          </td>
          <td>
            <h4 style="margin: 0 3" align="right"><%=tidsforbrug%></h4>
          </td>
    </tr>
<%rsoracle.movenext%>
<% loop %>
</table>
Samlet tidsforbrug : <%=TimeCalc("00:00:00", DateAdd("s",totalTidsforbrug,"00:00:00"))%>
Avatar billede Jman Praktikant
04. september 2002 - 21:40 #11
undskyld ventetiden *rødme*
Jeg får en intern serverfejl på den ovenstående kode
Avatar billede eagleeye Praktikant
04. september 2002 - 21:42 #12
Har du lagt function:  function TimeCalc(StartTime, FinishTime)

nede i bunden ??
Avatar billede Jman Praktikant
04. september 2002 - 21:45 #13
ja
Har prøvet både med og uden <%%> - var ikke helt sikker på om det skulle være det ene eller det andet
Avatar billede eagleeye Praktikant
04. september 2002 - 21:46 #14
Der skal <% %> uden om..

Har du prøvet at slt "Show friendly HTTP error messages" fra i IE under Tools->Internet Options->Advanced  ?
Avatar billede eagleeye Praktikant
04. september 2002 - 21:46 #15
For at få en bedre fejl kode
Avatar billede Jman Praktikant
04. september 2002 - 21:49 #16
den er slået til :(
Den hedder i øvrigt "Vis meddelelser om uskadelige HTTP-fejl" på dansk XP'sk
Avatar billede eagleeye Praktikant
04. september 2002 - 21:51 #17
Ok.. Så må vi præve at fjerne lidt af koden ..

Prøv at fjerne linie:

Samlet tidsforbrug : <%=TimeCalc("00:00:00", DateAdd("s",totalTidsforbrug,"00:00:00"))%>
Avatar billede Jman Praktikant
04. september 2002 - 21:52 #18
jeg prøver lige lidt
Avatar billede eagleeye Praktikant
04. september 2002 - 21:52 #19
Køre du med Dansk dato format ???

Hvis du udskriver: Response.write now
Hvordan ser det så ud??
Avatar billede Jman Praktikant
04. september 2002 - 21:58 #20
04-09-2002 22:02:04
Avatar billede eagleeye Praktikant
04. september 2002 - 22:02 #21
Så prøv også at udkommentere disse to linier:

'  tidsforbrug = TimeCalc(eventstart, eventstop)
'  totalTidsforbrug = totalTidsforbrug + DateDiff("s",eventstart, eventstop)
Avatar billede eagleeye Praktikant
04. september 2002 - 22:02 #22
Så skulle det nye bare være functionen som er lagt ind.
Avatar billede Jman Praktikant
04. september 2002 - 22:03 #23
det virker nu!!!

Jeg tror der har ligget en end if i bunden og drillede - Det var i hvert fald hvad jeg fandt frem til ved at sammenligne if'er.
Underligt at den ikke har skrevet noget om det i browseren

Tak for hjælpen - endnu engang!
Avatar billede Jman Praktikant
04. september 2002 - 22:06 #24
hmmm -det var vist for hurtigt sagt - når jeg kalder funktionen igen -viser den:

Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'string'

sideprod.asp, line 122
Avatar billede Jman Praktikant
04. september 2002 - 22:07 #25
sidste linie er linie 117
Avatar billede eagleeye Praktikant
04. september 2002 - 22:07 #26
Ok ;)

Ja det kan godt drille med et end if for meget... men du har ret det kunne den godt havde skevet noget om..
Avatar billede eagleeye Praktikant
04. september 2002 - 22:08 #27
I en linie som ikke findes?
Avatar billede Jman Praktikant
04. september 2002 - 22:08 #28
kan det have noget at gøre med at databasen ikke er lukket korrekt - jeg synes ikke liiiige jeg kan finde at jeg havde lukket min db ordentligt
Avatar billede eagleeye Praktikant
04. september 2002 - 22:10 #29
Det er ikke lige en typisk database/connection fejl, men det er en god ide at lukke connection rigtigt.
Avatar billede eagleeye Praktikant
04. september 2002 - 22:12 #30
Jeg har også fået den hvis det giver mere end 100 timer ....
Kommer lige med en ny function om et par sekunder...
Avatar billede Jman Praktikant
04. september 2002 - 22:12 #31
det er skægt - nu har jeg luket db - fejlen kommer stadig på samme linienr., men nu der det til gengæld linien midt i min db.close

Jeg tror jeg lader den hænge til i morgen - det kan være det virker når serveren har smidt session :)
Avatar billede eagleeye Praktikant
04. september 2002 - 22:15 #32
Du kan udskifte functionen med, for hvis det giver mere end 100 timer så kommer den fejl+kode du skrev i kommentar (04/09-2002 22:06:41)


<%
function TimeCalc(StartTime, FinishTime)
Dim diff, mins, hours, secs
diff = datediff("s",StartTime,FinishTime)
hours = int(diff / (60*60))
mins = Int(60*(diff / (60*60) - hours))
secs = Int(diff - ((60*60)* hours) - (60 * mins))

hours = hours
mins = string(2-len(mins),"0") & mins
secs = string(2-len(secs),"0") & secs

TimeCalc = hours & ":" & mins & ":" & secs
end function
%>
Avatar billede Jman Praktikant
04. september 2002 - 22:19 #33
samme fejl 8(
Avatar billede eagleeye Praktikant
04. september 2002 - 22:22 #34
Den connection hedder dboracle  du skrver du har skrevet db.Close men det skal vel være dboracle.Close  ???
Avatar billede Jman Praktikant
04. september 2002 - 22:23 #35
ja-ja..Det er i orden
Avatar billede eagleeye Praktikant
04. september 2002 - 22:28 #36
Det lyder underligt.

Prøv at ændre functionen til dette:

<%
function TimeCalc(StartTime, FinishTime)
Dim diff, mins, hours, secs
diff = datediff("s",StartTime,FinishTime)
hours = int(diff / (60*60))
mins = Int(60*(diff / (60*60) - hours))
secs = Int(diff - ((60*60)* hours) - (60 * mins))

if len(hours) = 1 then hours = "0" & hours
if len(mins) = 1 then mins = "0" & mins
if len(secs) = 1 then secs = "0" & secs

TimeCalc = hours & ":" & mins & ":" & secs
end function
%>
Avatar billede Jman Praktikant
04. september 2002 - 22:34 #37
WHAT can I say .... Nu virker den igen - Det må have været noget med lukningen at gøre .. eller det at jeg har flyttet close-delen til under end if

Slut på opgave herfra ... tak igen
Avatar billede eagleeye Praktikant
04. september 2002 - 22:35 #38
Ok.... :)
Avatar billede Jman Praktikant
12. september 2002 - 16:47 #39
ny extension...ny beregning.. Kunne jeg få din opmærksomhed over på sp: http://www.eksperten.dk/spm/257175 ?
Avatar billede Jman Praktikant
27. februar 2003 - 18:30 #40
hej eagleeye
Jeg vil ikke trævle op i gamle spørgsmål - hellere oprette nye, men jeg har brug for din hjælp á la dette sp.
Jeg skal beregne forskel fra start/stop men hvor db-feltet er dato/tidsfelt.

Kan du hjælpe mig med dette ?
Avatar billede Jman Praktikant
27. februar 2003 - 18:31 #41
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