Avatar billede Jman Praktikant
30. august 2002 - 15:16 Der er 17 kommentarer og
1 løsning

Jeg skal bruge en superduper ASP-koder til denne opgave - kap. 2

Jvf. sp. http://www.eksperten.dk/spm/251824

Jeg har lavet en historik, hvor jeg slår alle ordre op på en given dato.
Den viser også alle ordrene fint. ...men-men-men det er kun den sidste ordre, hvor den sammenlagte tid bliver beregnet... Hvorledes kan man slå alle ordrene sammen i bunden, så der er en sammenlgt tidsberegning på alle ordrene ?
Avatar billede somaliomar Praktikant
30. august 2002 - 19:22 #1
Hej igen

Beregner den tiden mellem START og STOP rigtig ud eller hvad?
Avatar billede Jman Praktikant
01. september 2002 - 07:37 #2
hey somaliomar!
Ja, jeg har lavet en loop i loopet... hvis du forstår.... Jeg har lavet en sql, hvor jeg kalder alle ordrenr. og efterfølgende poster jeg det ordrenr ind i den sql, der viser historikken.
Det vises faktisk fint for hver enkelt ordre (altså det med at vise tidsforbrug mellem START og STOP. Men det er kun den sidste ordre, hvor den sammenlagte tid (totalhours) beregnes.
Jeg tror det er et simpelt spørgsmål om at får placeret variablerne korrekt, så den tæller alle tiderne sammen fra alle ordrenumrene.

Skal du have koden, som den ser ud nu ?
Avatar billede somaliomar Praktikant
01. september 2002 - 09:58 #3
Det vil jeg meget gerne :)
Avatar billede Jman Praktikant
02. september 2002 - 12:49 #4
HERE GOES:

<%
Set dboracle = CreateObject("ADODB.Connection")
strConn = "DSN=xxxxxxxx;Database=xxxxx;uid=xxxxxxxx;pwd=xxxxx"
dboracle.Open strConn
strSQL1 = "select distinct p.adno, a.ad_type from pub p, ad a where  a.adno = p.adno and p.pdate = (select pdate from calendar where paper = 'DRS') and a.ad_type  in ('D','P')"
Set rs = CreateObject("ADODB.Recordset")
rs.Open strSQL1, dbOracle
%>
<tr>
<td>
<h6><%=ordrenr%></h6>
</td>
</tr>
<% do while not rs.EOF %>
<% ordrenr = rs("adno") & ".qxd" %>
<td>
<h6><%=ordrenr%></h6>
</td>
</tr>
<%
strSQL2 = "Select * FROM ANNTID WHERE TEXT = '" & ordrenr & "' order by timestamp"
Set rsoracle = CreateObject("ADODB.Recordset")
rsoracle.Open strSQL2, dbOracle
%>
<% if not rsoracle.EOF then %>
<table border="2" cellpadding="0" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" bgcolor="#FFFFFF">
  <tr>
          <td width="100" bgcolor="#E6E6D0"><h3 style="margin: 0 3">ordrenummer</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>
<%
totalhours = 0
totalmins = 0

do while not rsoracle.EOF %>
        <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">
<%

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
%>
</h4>
          </td>
        </tr>
<% rsoracle.movenext %>
<% loop %>
<% end if %>
<%
rs.movenext
loop
%>
    <tr>
    <td colspan="4">
<%
    totalmins = totalmins
    totalseks = totalseks mod 60
    totalhours = totalhours
    totalmins = totalmins mod 60

If totalhours <> 0 Then
    Response.Write "<h3>Samlet forbrug på ordre " & Request.querystring("ordrenummer") & " = " & totalhours & "&nbsp;time(r) og&nbsp;" & totalmins & "&nbsp;minutter</h3>"
Else
    Response.Write "<h3>Samlet forbrug på ordre " & Request.querystring("ordrenummer") & " = " & totalmins & "&nbsp;minutter</h3>"
End If
%> &nbsp;</td>
    </tr>
    <%
    rs.Close
    Set rs = Nothing
    rsoracle.Close
    Set rsoracle = Nothing
    Set SQL = Nothing
    %>
<%
    dbOracle.Close
    Set dbOracle = Nothing%>
Avatar billede somaliomar Praktikant
02. september 2002 - 12:51 #5
Hvad er det, der er galt her?
Avatar billede Jman Praktikant
02. september 2002 - 13:04 #6
Den beregner kun den sidste post's sammenlagte tid -
Det jeg gerne ville have var at den skulle loope gennem alle ordrenummer, til indeværende uge og så vise dem, og efterfølgende lave en sammentælling i tidfsforbrug af alle de poster, der har været for indeværende uge (total tidsforbrug på alle ordrenumre)
Avatar billede somaliomar Praktikant
02. september 2002 - 13:06 #7
Jeg er ikke helt med ?)
Avatar billede Jman Praktikant
02. september 2002 - 13:12 #8
OK:
Ovenstående koder viser flg:
ordrenummer  |  starttid  |  stationid  |  event(start/stop)  |  tidsforbrug
så looper den igennem alle ordrenumer - og den allersidste post viser den så yderligeree "samlet tidsforbrug" - men kun på den sidste post.

Jeg ville gerne have at den viste samlet tidsforbrug for ALLE posterne
Avatar billede somaliomar Praktikant
02. september 2002 - 13:31 #9
Jeg kan ikke se hvad fejlen er. Men prøv det her:

<%
Set dboracle = CreateObject("ADODB.Connection")
strConn = "DSN=xxxxxxxx;Database=xxxxx;uid=xxxxxxxx;pwd=xxxxx"
dboracle.Open strConn
strSQL1 = "select distinct p.adno, a.ad_type from pub p, ad a where  a.adno = p.adno and p.pdate = (select pdate from calendar where paper = 'DRS') and a.ad_type  in ('D','P')"
Set rs = CreateObject("ADODB.Recordset")
rs.Open strSQL1, dbOracle
%>
<tr>
<td>
<h6><%=ordrenr%></h6>
</td>
</tr>
<% do while not rs.EOF %>
<% ordrenr = rs("adno") & ".qxd" %>
<td>
<h6><%=ordrenr%></h6>
</td>
</tr>
<%
strSQL2 = "Select * FROM ANNTID WHERE TEXT = '" & ordrenr & "' order by timestamp"
Set rsoracle = CreateObject("ADODB.Recordset")
rsoracle.Open strSQL2, dbOracle
%>
<% if not rsoracle.EOF then %>
<table border="2" cellpadding="0" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" bgcolor="#FFFFFF">
  <tr>
          <td width="100" bgcolor="#E6E6D0"><h3 style="margin: 0 3">ordrenummer</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>
<%
totalhours = 0
totalmins = 0

do while not rsoracle.EOF %>
        <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">
<%

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
%>
</h4>
          </td>
        </tr>
<% rsoracle.movenext %>
<% loop %>
<% end if %>
<%
rs.movenext
loop
%>
    <tr>
    <td colspan="4">
<%
    totalmins = totalmins \ 60
    totalseks = totalseks mod 60
    totalhours = totalhours \ 60
    totalmins = totalmins mod 60

If totalhours <> 0 Then
    Response.Write "<h3>Samlet forbrug på ordre " & Request.querystring("ordrenummer") & " = " & totalhours & "&nbsp;time(r) og&nbsp;" & totalmins & "&nbsp;minutter</h3>"
Else
    Response.Write "<h3>Samlet forbrug på ordre " & Request.querystring("ordrenummer") & " = " & totalmins & "&nbsp;minutter</h3>"
End If
%> &nbsp;</td>
    </tr>
    <%
    rs.Close
    Set rs = Nothing
    rsoracle.Close
    Set rsoracle = Nothing
    Set SQL = Nothing
 
    dbOracle.Close
    Set dbOracle = Nothing
   
    %>


Jeg gad godt se resultatet.
Avatar billede Jman Praktikant
03. september 2002 - 08:25 #10
jeg kan vise dig det i form af screendumps, da det er på intranet - men det blive vist først i morgen eller torsdag, da jeg ligger syg p.t.
Avatar billede somaliomar Praktikant
03. september 2002 - 19:16 #11
I orden
Avatar billede Jman Praktikant
04. september 2002 - 14:30 #12
Jeg har fundet en fejl i beregningerne -

http://www.jman.dk/exempel1.htm
Avatar billede Jman Praktikant
04. september 2002 - 15:25 #13
der kan du også se hvad jeg mener med den samlede tidsberegning
Avatar billede somaliomar Praktikant
06. september 2002 - 19:27 #14
Jep, det kan jeg og jeg tror jeg ved hvor problemet er.
Avatar billede somaliomar Praktikant
06. september 2002 - 20:56 #15
Dette er testet, så det skulle gerne virke


<%
Set dboracle = CreateObject("ADODB.Connection")
strConn = "DSN=xxxxxxxx;Database=xxxxx;uid=xxxxxxxx;pwd=xxxxx"
dboracle.Open strConn
strSQL1 = "select distinct p.adno, a.ad_type from pub p, ad a where  a.adno = p.adno and p.pdate = (select pdate from calendar where paper = 'DRS') and a.ad_type  in ('D','P')"
Set rs = CreateObject("ADODB.Recordset")
rs.Open strSQL1, dbOracle
%>
<tr>
<td>
<h6><%=ordrenr%></h6>
</td>
</tr>
<% do while not rs.EOF %>
<% ordrenr = rs("adno") & ".qxd" %>
<td>
<h6><%=ordrenr%></h6>
</td>
</tr>
<%
strSQL2 = "Select * FROM ANNTID WHERE TEXT = '" & ordrenr & "' order by timestamp"
Set rsoracle = CreateObject("ADODB.Recordset")
rsoracle.Open strSQL2, dbOracle
%>
<% if not rsoracle.EOF then %>
<table border="2" cellpadding="0" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" bgcolor="#FFFFFF">
  <tr>
          <td width="100" bgcolor="#E6E6D0"><h3 style="margin: 0 3">ordrenummer</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>
<%
totalhours = 0
totalmins = 0

do while not rsoracle.EOF %>
        <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">
<%

If rsoracle("event") = "START" Then
  eventstart = rsoracle("timestamp")
Else
  eventstop = rsoracle("timestamp")
  sek = datediff("s", eventstart, eventstop)

  min = sek \ 60
  hours = min \ 60
  min = min mod 60
  sek = sek mod 60

  totalhours = totalhours + hours
  totalmins = totalmins + min
  totalseks = totalseks + sek
 
  If hours = 0 Then
    Response.Write min & " minutter og " & sek & " sekunder"
  Else
    Response.Write hours & " time(r) og " & min & " minutter"
  End If
End If
%>
</h4>
          </td>
        </tr>
<% rsoracle.movenext %>
<% loop %>
<% end if %>
<%
rs.movenext
loop
%>
    <tr>
    <td colspan="4">
<%
  totalmins  = totalmins + (totalseks \ 60)
  totalseks  = totalseks mod 60
  totalhours = totalhours + (totalmins \ 60)
  totalmins  = totalmins mod 60

If totalhours <> 0 Then
    Response.Write "<h3>Samlet forbrug på ordre " & Request.querystring("ordrenummer") & " = " & totalhours & "&nbsp;time(r) og&nbsp;" & totalmins & "&nbsp;minutter</h3>"
Else
    Response.Write "<h3>Samlet forbrug på ordre " & Request.querystring("ordrenummer") & " = " & totalmins & "&nbsp;minutter</h3>"
End If
%> &nbsp;</td>
    </tr>
    <%
    rs.Close
    Set rs = Nothing
    rsoracle.Close
    Set rsoracle = Nothing
    Set SQL = Nothing
 
    dbOracle.Close
    Set dbOracle = Nothing
   
    %>
Avatar billede Jman Praktikant
12. september 2002 - 16:46 #16
den viser stadig forkert... men nu er det irrellevant, for den xtension, jeg nu har regner selv prod-tiden ud.
Nu skal jeg bare have omregnet sekunder til tiden...
Se evt. sp.: http://www.eksperten.dk/spm/257175
Avatar billede somaliomar Praktikant
12. september 2002 - 16:51 #17
Æhh... Hvorfor har du accepteretmit svar, hvis koden ikke virker?
Avatar billede Jman Praktikant
12. september 2002 - 16:54 #18
Fordi du har gjort en god indsats - det vil jeg gerne belønne for.. ;o)
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