PDA

View Full Version : Angående en ASP räknare med databas!


Brimba
2000-02-04, 15:57
Hej!

Kolla på min underliga kod här nedan:


<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\dmab\raknare.mdb"
SQLeller = "SELECT datum FROM raknare"
SET RS = Connection.Execute(SQLeller)

RS.MoveFirst
i=false

Do Until i=true If RS.EOF then

SQLStmt = "INSERT INTO raknare"
SQLStmt = SQLStmt & "(antal, datum)"
SQLStmt = SQLStmt & "VALUES('" & 1 & "','" & date & "')"
i=true
Elseif RS("datum") = date Then

SQLStmt = "UPDATE raknare SET antal = antal +1 WHERE datum = #" & date & "#"
i=true

End If
If i=true Then RS.MoveFirst
RS.MoveNext
Loop

Connection.Execute(SQLStmt)
%>



Om jag inte lägger in "If i=true Then RS.MoveFirst"
Så kommer den att klaga på att den har kommit till EOF. Men jag har ju endå
"Do Until i=true
If RS.EOF then"

Så man tycker att den borde loopa tills EOF. Men hmm? Nånn som kan fixa till koden så att den blir lite snyggare?

Jag är förbryllad!


Mvh
Patrik
aka Brimba

MattiasW
2000-02-04, 19:13
Varför inte göra så här i stället.

SET RS = Connection.Execute("UPDATE raknare SET antal = antal +1 WHERE datum = #" & date & "#")

SET RS = Connection.Execute("SELECT antal FROM raknare WHERE datum = #" & date & "#")
IF RS.EOF THEN
' Datumposten saknas. Lägg till den
SQLStmt = "INSERT INTO raknare"
SQLStmt = SQLStmt & "(antal, datum)"
SQLStmt = SQLStmt & "VALUES('" & 1 & "','" & date & "')"
Connection.Execute(SQLStmt)
END IF

För övrigt är detta en lösning som fungerar i en fleranvändarmiljö då den första uppdaten låser räknarposten. om man sedan vill använda räknaren som primär nyckel till en tabell kommer ingen annan kunna komma mellan med samma nyckel :)
___________
MattiasW