webForumDet fria alternativet

+ 1 i databas (räknare)

ASP

10 svar · 307 visningar · startad av Lazerzubb

Medlem sedan mars 2000542 inlägg
Frågan#1

Behöver bara lite hjälp har.

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=databas.mdb"

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Addera = "SELECT * FROM info"

   RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

	RecSet.AddNew

	RecSet("aid") = Request.QueryString("aid")
	RecSet("site") = Request.QueryString("site")

	RecSet.Update
	RecSet.Close
	Connect.Close %>

aid, är en specific id (i access), jag skulle behöva en script typ:

If aid exists then +1 on number (update någonting)
If not then 1

Enkel räknare alltså, om det redan finns en kolumn för specifika id'et plusa 1 i "raknare" (Namnet på fältet i access)

Medlem sedan dec. 200012 464 inlägg
#2
<%	
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=databas.mdb"

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM info where aid " & _
Request.QueryString("aid") 

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
if recset.eof then
	RecSet.AddNew
	RecSet("site") = Request.QueryString("site")
        Recset("raknare") = 1
else
        Recset("raknare") = clng(recset("raknare")) + 1
end if
RecSet.Update
RecSet.Close
Connect.Close 
%>
Medlem sedan dec. 20029 inlägg
#3

objConn.Execute "UPDATE Table SET Col2 = Col2+1 WHERE Col1 = 1"

Att använda SQL-frågor istället för att skriva till ett recordset är bättre rent prestandamässigt ;-)

/TobiasT
http://webbhotell.theland.se - varför betala mer än nödvändigt?

Medlem sedan mars 2000542 inlägg
#4

Skapade en ny databas istället.
Men den skriver inte till ett nytt "aid" för varje nytt ID i QueryStringen, utan fortsätter bara + på det första aid.

<html>
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=track.mdb"

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM track2"

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
if recset.eof then
	RecSet.AddNew
	RecSet("aid") = Request.QueryString("id")
        Recset("raknare") = 1
else
        Recset("raknare") = clng(recset("raknare")) + 1
end if
RecSet.Update
RecSet.Close
Connect.Close 
%>

</HTML>
Medlem sedan mars 20015 287 inlägg
#5

Vad var det för fel på LarsGs script?

Du måste i din sql-fråga ställa villkoret "where aid" osv, som LarsG gjort.

Medlem sedan mars 2000542 inlägg
#6

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/raknare.asp, line 9

Problemet, är att jag inte har AID, det hämtas från QueryStringen (?ID=), sedan dumpade jag "Site"

Medlem sedan mars 20015 287 inlägg
#7
Addera = "SELECT * FROM info where aid " & _
Request.QueryString("ID")

Eller missar jag något?

Annars kan iofs felmeddelandet tyda på att du behandlar tal som text eller vice versa.

Medlem sedan mars 2000542 inlägg
#8

Bytta namn på databasen, och fälten är "number".

<%	
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=track2.mdb"

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM track2 where aid " & _
Request.QueryString("id") 

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
if recset.eof then
	RecSet.AddNew
	RecSet("aid") = Request.QueryString("id")
        Recset("raknare") = 1
else
        Recset("raknare") = clng(recset("raknare")) + 1
end if
RecSet.Update
RecSet.Close
Connect.Close 
%>
Medlem sedan dec. 200012 464 inlägg
#9

<%

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=track2.mdb"

Set RecSet = Server.CreateObject("ADODB.Recordset")
if  Request.QueryString("id") <> "" then
   Addera = "SELECT * FROM track2 where aid = " & _
   Request.QueryString("id") 
else
   Addera = "SELECT * FROM track2 where 1=2"
end if
RecSet.Open Addera, Connect, 3,3
if recset.eof then
	RecSet.AddNew
	RecSet("aid") = Request.QueryString("id")
        Recset("raknare") = 1
else
        Recset("raknare") = clng(recset("raknare")) + 1
end if
RecSet.Update
RecSet.Close
Connect.Close 
%>

Jag hade missat ett = i min första post. En orsak till meddelandet kan vara att adLockOptimistic etc inte är definierade, därför bytte jag dom.

Medlem sedan mars 2000542 inlägg
#10

;) you know it, Tack.

Medlem sedan mars 20015 287 inlägg
#11

Herre min skapare! Å inte såg jag det heller, men man kan ju inte tvivla på LarsG, ;) eller? :birp

267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)