webForumDet fria alternativet

Angående en ASP räknare med databas!

ASP

1 svar · 338 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Frågan#1

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

Medlem sedan jan. 2000144 inlägg
#2

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

273 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)