---
title: "Poster kommer 2 gånger, problem med if-stats"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/72558-poster-kommer-2-gånger-problem-med-if-stats"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Känning"
published: "2003-03-29T18:27:29.000Z"
updated: "2003-03-29T21:23:18.000Z"
replies: 12
views: 224
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/72558-poster-kommer-2-gånger-problem-med-if-stats"
---

# Poster kommer 2 gånger, problem med if-stats

## #1 — Känning, 2003-03-29T18:27Z

Jag har denna koden och när jag kör den blir det rätt. Men när jag inkluderar filen på en annan sida så blir det inte rätt, då kommer båda posterna.

Det som blir fel är att "if sjudagar \>0 then" kommer 2 gånger, alltså den skiter i mitt if

\<% 
datum = date()
x = 0
sjudagar = 0
do until x = 7
Set conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=" & Server.MapPath("databasen.mdb")&";" 

SQL = "select \* from tabell where datum = #" & datum & "# order by ID DESC"

Set rs = Server.CreateObject("ADODB.Recordset") 
rs.Open sql, conn, 3, 3 

totinsats = 0
totvinst = 0
dagensres = 0

do until rs.eof 
 
totinsats = totinsats + rs("insats")
totvinst = totvinst + rs("vinst")
	
rs.Movenext
Loop
dagensres = totvinst - totinsats 
sjudagar = sjudagar + dagensres
if dagensres \>0 then
response.write datum &" "&Round(dagensres,2) &"\<br\>"
else
%\>
\<% = date()%\>: \<font color="#FF0000"\>\<% = Round(dagensres,2) %\>\</font\>\<br\>
\<%
end if
x = x + 1
datum=datum-1
loop
if sjudagar \>0 then
response.Write "Senaste 7 dagarna: "&Round(sjudagar,2)
else 
%\>
Senaste 7 dagarna: \<font color="#FF0000"\>\<% = Round(sjudagar,2) %\>\</font\>\<br\>
\<%
end if
rs.Close
Conn.Close
%\>

Vad säger ni om koden? Jag är rätt ny med asp och detta är det första riktiga projektet som jag håller på med, jag gör en spelsida där jag och några polare bokför hur det går för oss när vi spelar på matcher.

Permalänk: https://www.webforum.nu/p/72558

## #2 — Känning, 2003-03-29T19:07Z

Glöm detta, jag hade knarkat till det lite...

Ta gärna bort denna tråden

Permalänk: https://www.webforum.nu/p/993609

## #3 — Sebbe, 2003-03-29T19:09Z

Skriv ALLTID hur du löste det!

Permalänk: https://www.webforum.nu/p/993610

## #4 — Känning, 2003-03-29T19:16Z

Sorry Sebbe, det ska jag komma ihåg att göra.

Jag löste det genom att jag hade kollat helt fel, koden ovan fungerar.

Permalänk: https://www.webforum.nu/p/993611

## #5 — Känning, 2003-03-29T19:18Z

Eller rättare sagt, det är ett fel i den, det står \<% =date() %\> där det borde stå datum istället. Så jag kopierar in den nya koden som jag har uppdaterat lite.

\<% 
datum = date()
x = 0
sjudagar = 0
do until x = 7
Set conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=" & Server.MapPath("databas.mdb")&";" 

SQL = "select \* from tabell where datum = #" & datum & "# order by ID DESC"

Set rs = Server.CreateObject("ADODB.Recordset") 
rs.Open sql, conn, 3, 3 

totinsats = 0
totvinst = 0
dagensres = 0

do until rs.eof 
 
totinsats = totinsats + rs("insats")
totvinst = totvinst + rs("vinst")
	
rs.Movenext
Loop
dagensres = totvinst - totinsats 
sjudagar = sjudagar + dagensres
if dagensres \>0 then
response.write datum&":" &" "&Round(dagensres,2) &"\<br\>"
else
%\>
\<% = datum %\>: \<font color="#FF0000"\>\<% = Round(dagensres,2) %\>\</font\>\<br\>
\<%
end if
x = x + 1
datum=datum-1
loop
if sjudagar \>0 then
response.Write "Senaste 7 dagarna: "&Round(sjudagar,2)
else 
%\>
Senaste 7 dagarna: \<font color="#FF0000"\>\<% = Round(sjudagar,2) %\>\</font\>\<br\>
\<%
end if
rs.Close
Conn.Close
%\>

Permalänk: https://www.webforum.nu/p/993612

## #6 — Sebbe, 2003-03-29T19:25Z

Ytterligare en sak: Anropa aldrig ett objekt i en loop när du stönger objektet utanför loopen! Lägg 

```
Set conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databas.mdb")&";"
```

innan loopen! Och sedan, om du vill göra det lite snabbare till kan du byta ut

```
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databas.mdb")&";"
```

till

```
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb")
```

Läs mer på <https://www.connectionstrings.com> :)

Permalänk: https://www.webforum.nu/p/993615

## #7 — Känning, 2003-03-29T19:33Z

Tackar  :)

En annan grej som du kanske skulle kunna hjälpa mig med:

Jag skriver ju ut om vi gör ett minusresultat med rött istället, jag vet inte hur man skriver det i koden så jag var tvungen att lägga det utanför.

Du kanske skulle kunna tipsa mig om hur man gör?

Permalänk: https://www.webforum.nu/p/993618

## #8 — Sebbe, 2003-03-29T20:39Z

Du använder

```
Response.Write("Senaste 7 dagarna: <font color=""#FF0000"">" & Round(sjudagar,2) & "</font><br>")
```

 :)

Permalänk: https://www.webforum.nu/p/993647

## #9 — Känning, 2003-03-29T20:56Z

Man tackar

:)

Permalänk: https://www.webforum.nu/p/993659

## #10 — Sebbe, 2003-03-29T21:04Z

Lite optimering av koden :)

```
<% 
dtmDatum = Date()

Set objCon = Server.CreateObject("ADODB.Connection") 
objCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb") 

strSQL = "SELECT * FROM tabell WHERE datum Between #" & dtmDatum & "# AND #" & DateAdd("d",-7,Date) & "# ORDER BY datum DESC" 

Set objRS = Server.CreateObject("ADODB.Recordset") 
objRS.Open strSQL, objCon, 3, 3 

Do Until objRS.EOF
  intResultat = objRS("vinst") - objRS("insats")
  If intResultat > 0 Then 
    Response.Write(objRS("datum") & ": " & Round(intResultat,2) & "<br>")
  Else 
    Response.Write(objRS("datum") & ": <font color=""#FF0000"">" & Round(intResultat,2) & "</font><br>")
  End If
  objRS.MoveNext
Loop
objRS.MoveFirst

Do Until objRS.EOF
  intSenaste = intSenaste + (objRS("vinst") - objRS("insats"))
  objRS.MoveNext
Loop

If intSenaste > 0 Then 
  Response.Write("Senaste 7 dagarna: " & Round(intSenaste,2))
Else 
  Response.Write("Senaste 7 dagarna: <font color=""#FF0000"">" & Round(intSenaste,2) & "</font><br>") 
End If

objRS.Close
Set objRS = Nothing
objCon.Close
Set objCon = Nothing
%>
```

Permalänk: https://www.webforum.nu/p/993663

## #11 — LarsG, 2003-03-29T21:07Z

Du gör ju väldigt mycket i onödan, hantera alla beräkningar i SQL istället.

```
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databasen.mdb")&";"

SQL = "select datum , sum(insats),sum(vinst) from tabell where datum > date() -7 group by datum order by datum DESC"
set rs = conn.execute(sql)

sjudagar = 0
do until rs.eof
   dagensres = rs(2) - rs(1)
   sjudagar = sjudagar + dagensres
   response.write rs(0)
   if dagensres <= 0 then response.write "<font color='#FF0000'>"
   response.write Round(dagensres,2) 
   if dagensres <= 0 then response.write "</font>"
   response.write "<br>"
loop
response.Write "Senaste 7 dagarna: "
if sjudagar <= 0 then response.write "<font color='#FF0000'>"
response.write Round(sjudagars,2)
if sjudagar <= 0 then response.write "</font>"
response.write "<br>"
rs.Close
Conn.Close
%>
```

Permalänk: https://www.webforum.nu/p/993665

## #12 — Känning, 2003-03-29T21:16Z

Men det är ju så det ska se ut  :)

tackar igen

Permalänk: https://www.webforum.nu/p/993673

## #13 — Sebbe, 2003-03-29T21:23Z

Jo, LarsG's metod var ju lite smidigare, som du tydligen såg. :)

Permalänk: https://www.webforum.nu/p/993679

---

Tråden på webben: https://www.webforum.nu/amne/asp/72558-poster-kommer-2-gånger-problem-med-if-stats
