---
title: "Räknar fel?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/102818-räknar-fel"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Bosse168"
published: "2004-05-03T10:05:54.000Z"
updated: "2004-05-06T19:06:53.000Z"
replies: 29
views: 643
page: 1
pages: 2
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/102818-räknar-fel"
---

# Räknar fel?

_Sida 1 av 2._

## #1 — Bosse168, 2004-05-03T10:05Z

Varför blir det aldrig någon ny vecka när jag använder denna koden?

```
'----------------------------- Räknaren --------------

Set rstRecSet = Connect.Execute("SELECT * FROM raknare where ip = '"& Request.ServerVariables("REMOTE_ADDR") &"' AND datum='" & Date & "'")

if rstRecSet.eof then

'-------------- Plusar på en unik i veckan -----------------------

SQL = "SELECT * From raknare_week WHERE nr <> "& DatePart("ww", Date(), 2) &" AND YEAR(datum) = YEAR(CURDATE()) Order By id Desc"

Set RsWeek = Connect.Execute(SQL)

Do until RsWeek.EOF

IF DatePart("ww", Date(), 2) = DatePart("ww", RsWeek("datum"), 4) then

Connect.Execute("UPDATE raknare_week SET unika = unika + 1 WHERE id = "& RsWeek("id") &"")

nyWeek = 0

End IF

RsWeek.MoveNext
Loop
RsWeek.Close : Set RsWeek = nothing
'-------------------- OM VECKAN INTE FINNS MED -------------------------

IF nyWeek <> 0 then
Connect.Execute("INSERT INTO raknare_week (nr,antal,unika,datum) VALUES ("& DatePart("ww", Date(), 2) &",1,1,'"& Now &"')")
END IF
'-------------- SLUT Plusar på en unik i veckan SLUT-----------------

och sedan lite andra kollar och plusningar.
```

När jag skriver ut vecka SQL satsen så ser den ut så här:
SELECT \* From raknare_week WHERE nr \<\> 19 AND YEAR(datum) = YEAR(CURDATE()) Order By id Desc

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

## #2 — yohpops, 2004-05-03T10:13Z

Vad jag kan se blir nyWeek alltid 0.
Alltså körs aldrig

```
Connect.Execute("INSERT INTO raknare_week (nr,antal,unika,datum) VALUES ("& DatePart("ww", Date(), 2) &",1,1,'"& Now &"')")
```

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

## #3 — Bosse168, 2004-05-03T10:28Z

Då borde det alltså räcka med att sätta Else före nyWeek = 0
Och ändra IF nyWeek \<\> 0 then till IF nyWeek = 0 then

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

## #4 — Bosse168, 2004-05-03T10:32Z

Eller detta borde väl funka?

```
'----------------------------- Räknaren --------------

Set rstRecSet = Connect.Execute("SELECT * FROM raknare where ip = '"& Request.ServerVariables("REMOTE_ADDR") &"' AND datum='" & Date & "'")

if rstRecSet.eof then

'-------------- Plusar på en unik i veckan -----------------------

SQL = "SELECT * From raknare_week WHERE nr <> "& DatePart("ww", Date(), 2) &" AND YEAR(datum) = YEAR(CURDATE()) Order By id Desc"

Set RsWeek = Connect.Execute(SQL)

Do until RsWeek.EOF

IF DatePart("ww", Date(), 2) = DatePart("ww", RsWeek("datum"), 4) then

Connect.Execute("UPDATE raknare_week SET unika = unika + 1 WHERE id = "& RsWeek("id") &"")

Else
'-------------------- OM VECKAN INTE FINNS MED -------------------------
Connect.Execute("INSERT INTO raknare_week (nr,antal,unika,datum) VALUES ("& DatePart("ww", Date(), 2) &",1,1,'"& Now &"')")

End IF

RsWeek.MoveNext
Loop
RsWeek.Close : Set RsWeek = nothing
```

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

## #5 — PDahlen, 2004-05-03T10:35Z

> Eller detta borde väl funka?

Prova så märker du om det funkar eller inte. ;)

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

## #6 — Bosse168, 2004-05-03T10:42Z

Den lägger inte in datumet på den nya veckan utan skapar bara en ny rad..

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

## #7 — PDahlen, 2004-05-03T10:48Z

Menar du att den alltid gör INSERT och aldrig UPDATE?

```
IF DatePart("ww", Date(), 2) = DatePart("ww", RsWeek("datum"), 4) then
```

Du har 2 i din ena DatePart och 4 i den andra. Har du provat att ha samma på båda sidorna så att jämförelsevärdet kan bli samma?

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

## #8 — Bosse168, 2004-05-03T10:55Z

Det löste sig när jag la till svensk tid:
Session.LCID = 1053

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

## #9 — Bosse168, 2004-05-03T11:25Z

Fick göra om lite i koden till för att få det att funka  :stud
Någon som vet hur man kan optimera den eller bara göra den bättre  :r 

```
'----------------------------- Räknaren --------------
Set rstRecSet = Connect.Execute("SELECT * FROM raknare where ip = '"& Request.ServerVariables("REMOTE_ADDR") &"' AND datum='" & Date & "'")

if rstRecSet.eof then

'-------------- Plusar på en unik i veckan -----------------------

SQL = "SELECT * From raknare_week WHERE nr = '"& DatePart("ww", NOW(), 4) &"' AND YEAR(datum) = YEAR(CURDATE()) Order By id Desc"

Set RsWeek = Connect.Execute(SQL)

IF not RsWeek.EOF Then

Connect.Execute("UPDATE raknare_week SET unika = unika + 1 WHERE nr = '"& DatePart("ww", NOW(), 4) + 1 &"' AND YEAR(datum) = YEAR(CURDATE())")

Else
'-------------------- OM VECKAN INTE FINNS MED -------------------------
SQL = "INSERT INTO raknare_week (nr,antal,unika,datum) VALUES ("& DatePart("ww", Date(), 2) &",1,1,'"& Now &"')"

Connect.Execute(SQL)

End IF

RsWeek.Close : Set RsWeek = nothing
'-------------- SLUT Plusar på en unik i veckan SLUT-----------------
```

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

## #10 — Jesper T, 2004-05-03T11:34Z

En god regel är att börja med att ta bort alla "SELECT \*..." och byta ut dem till de aktuella kolumnnamnen.
På alla update, delete och insert så lägger du till ,,128

```
Connect.Execute(SQL),,128
```

Som betyder att inget skall returneras.

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

## #11 — Bosse168, 2004-05-03T11:36Z

Ok detta är fixat några mer förslag? :)

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

## #12 — Bosse168, 2004-05-03T19:15Z

Ska man sätta ,,128 efter en COUNT(id) SQL sats?

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

## #13 — KoTTeN, 2004-05-03T19:38Z

Kör du med option explicit och dimmar alla variablar? Kapar tiden rätt bra faktiskt.

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

## #14 — @nders, 2004-05-03T19:38Z

> Ska man sätta ,,128 efter en COUNT(id) SQL sats?

Nej, inte när du hämtar data. Parametern 128 betyder adExecuteNoRecords, och meddelar att inget skall hämtas, så det ska inte skapas något recordset.

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

## #15 — Bosse168, 2004-05-03T19:51Z

"dimmar" variablarna gör jag men använder inte option explicit utan denna kod. Ska jag slänga in option explicit där också för att få bättre prestanda?

```
<%@ LANGUAGE="VBSCRIPT" %>
<% Response.Expires=-1
Response.Buffer = True
Session.LCID = 1053
%>
```

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

## #16 — KoTTeN, 2004-05-03T20:16Z

Ja, kasta in option explicit högst upp på sidan.

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

## #17 — Bosse168, 2004-05-03T20:18Z

Då får jag detta fel mess:
Active Server Pages error 'ASP 0140' 

Page Command Out Of Order 

/demo.asp, line 2 

The @ command must be the first command within the Active Server Page.

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

## #18 — @nders, 2004-05-03T20:24Z

Inte helt högst upp. Ska du ha med @-direktivet måste det vara på översta raden.

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

## #19 — Bosse168, 2004-05-03T20:25Z

Och sätter jag in option explicit efter \<%@ LANGUAGE="VBSCRIPT" %\>
så funkar inte min databas koppling.

Fel messet:
Microsoft VBScript runtime error '800a01f4' 

Variable is undefined: 'Connect' 

Och min koppling ser ut så här:

```
Set Connect = Server.CreateObject("ADODB.Connection")
'----- Gamla
Connect.Open = ("Driver={MySQL ODBC 3.51 Driver};Server=ADRESSEN;Port=3306;Database=XXXXX;UID=XXXXXX;PWD=XXXXX;")
```

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

## #20 — @nders, 2004-05-03T20:26Z

Har du Option Explicit *måste* du deklarera alla variabler. Så, det är bara att sätta igång. :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/102818-räknar-fel  
Nästa sida: https://www.webforum.nu/amne/asp/102818-räknar-fel/page2.md
