<SCRIPT RUNAT=server LANGUAGE="VBScript">
Sub Session_OnStart
Session.Timeout=1
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Uppdatera = "UPDATE users SET ONLINE = 1 WHERE SESSIONID ='"&Session.SessionID&"'"
RecSet.Open Uppdatera, Connect, adOpenStatic, adLockOptimistic
End Sub
Sub Session_OnEnd
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Uppdatera = "UPDATE users SET SESSIONID = 0, ONLINE = 0 WHERE SESSIONID ='"&Session.SessionID&"'"
RecSet.Open Uppdatera, Connect, adOpenStatic, adLockOptimistic
End Sub
</SCRIPT>
Någon som vet varför denna inte funkar?
jag får felmeddelande på rad 10
så här ser SQL satsen ut:
UPDATE users SET ONLINE = 1 WHERE SESSIONID ='114915650'
och jag får meddelandet:
Parametrarna är felaktiga, ligger utanför tillåtet intervall eller skapar en inbördes konflikt.
------------------
"When there's no more room in hell,
the dead will walk the earth."
--------------------- http://shortenings.cjb.net
nu vet jag varför det inte funkar, men jag vet inte hur jag ska komma förbi det.
Session onstart körs ju så fort nån går in på sidan. jag trodde den kördes så fårt man skriver typ Session("nånting") = nånting.. eller har jag fel?, för isåfall så körs ju session onstart för tidigt för min del. inte konstigt att det blir fel
------------------
"When there's no more room in hell,
the dead will walk the earth."
--------------------- http://shortenings.cjb.net
nja, inte mer än vanligt.. gillar bara det citatet.. har några polare som e helt sålda i Zombie rullar..dom filmar för övrigt själva.. kommer en sida snart där man kan köpa deras filmer ;)
åter till ASP.. När körs Session_OnStart och när körs Application_OnStart?
------------------
"When there's no more room in hell,
the dead will walk the earth."
--------------------- http://shortenings.cjb.net
När körs Session_OnStart och när körs Application_OnStart?
Session_OnStart körs när varje användare kör en asp-sida på servern för första gången, när användaren inleder sin session alltså.
Application_onStart körs när webtjänsten startas.
Vad gäller din ursprungliga fråga:
adovbs är inte inkluderat så du kan inte använda dig av konstanter som definieras där. Vilket du inte heller ska göra i detta fall, eftersom du inte ska skapa något recordset.
Du ska bara exekvera sql-satsen, du får ju ingenting tillbaka.
Alltså:
Sub Session_OnStart
Session.Timeout=1
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb")&";"
Uppdatera = "UPDATE users SET ONLINE = 1 WHERE SESSIONID ='"&Session.SessionID&"'"
Connect.Execute Uppdatera,,128
End Sub
Sub Session_OnEnd
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db.mdb")&";"
Uppdatera = "UPDATE users SET SESSIONID = 0, ONLINE = 0 WHERE SESSIONID ='"&Session.SessionID&"'"
Connect.Execute Uppdatera,,128
End Sub
Ingen garanti för att detta fungerar dock, eftersom global.asa sällan fungerar klockrent.
Mvh,
------------------
All your base are belong to me.
mhm!, jag fimpade onStart, kom på att den löser jag på ett annat sätt.. men onEnd måste jag ha, och jag ändrade den till så som du skrev, men den funkar inte.. det händer inget.. asså ONLINE ändras inte till 0.. :(
------------------
"When there's no more room in hell,
the dead will walk the earth."
--------------------- http://shortenings.cjb.net
on end körs inte förrän din session gått ut (olika på olika servrar men default är 20 minuter efter att du kört en asp sida sista gången.)
Den körs också om du gör en session abandon (eh.. tror jag iallafall)
Det händer ibland att session on end inte körs alls, varför det är så tvistar de lärda fortfarande om.
För att komma runt det kan man göra så att man på varje sida kör en snutt som sätter en tidsstämpel i databasen i en fin tabell (tex kan den heta tblInloggade) Sen kör man ett jobb (detta är rätt sql specifikt btw) var 5 minut och raderar bort folk ur tabellen som har en tidsstämpel på mer än t ex 20 minuter gammal.
På så sätt bygger man sin egen lilla hur många är inoggade hantering.
vassego :e
------------------ National Blonde Day! "Yeah, bam, bam, bam, bam, bam. I told 'em not to touch the alarm"