Avatar billede chris Nybegynder
22. januar 2001 - 18:55 Der er 9 kommentarer og
1 løsning

data fra et netop opdateret recordset

Kan man ikke lige efter man har opdateret sit recordset hive ID ud derfra. som herunder:

strSQL = \"SELECT * FROM Users\"
Set rs = myConn.Execute(strSQL)

Set rs = Server.CreateObject(\"ADODB.Recordset\")
rs.Open strSQL, myConn, 3, 3

rs.addnew
rs(\"Ip\") = request.servervariables(\"REMOTE_ADDR\")
rs(\"where\") = Request.ServerVariables(\"script_name\")
rs(\"user\") = Request.Cookies(\"bnlablabla\")(\"Username\")
rs(\"Tid\") = time()
rs(\"Dato\") = date()
rs(\"Online\") = \"true\"

rs.update

session(\"id\") = rs(\"id\")

Det lader til ikke at være rigtigt det jeg gør, for hvis jeg prøver at response.write session(\"id\"), får jeg intet output.
Avatar billede burningice Nybegynder
22. januar 2001 - 20:53 #1
prøv at fjern set rs = myConn.Execute(strSQL)

altså

Set rs = Server.CreateObject(\"ADODB.Recordset\")
strSQL = \"SELECT * FROM Users\"
rs.Open strSQL, myConn, 3, 3
Avatar billede eagleeye Praktikant
22. januar 2001 - 20:54 #2
Prøve det her, jeg har tilføjet en movelast:

rs.update
rs.movelast

session(\"id\") = rs(\"id\")
Avatar billede ldanielsen Nybegynder
22. januar 2001 - 21:24 #3
Hvis din database kan forstå det, så prøv

myConn.Execute \"INSERT INTO Users (Ip, [where], [user], Tid, Dato, Online) VALUES (\'\"&request.servervariables(\"REMOTE_ADDR\")&\"\', \'\"&Request.ServerVariables(\"script_name\")&\"\', \'\"&Request.Cookies(\"bnlablabla\")(\"Username\")&\"\', \'\"&time()&\"\', \'\"&date()&\"\', \'true\')

Set rs = myConn.Execute (\"SELECT TOP 1 ID FROM Users\")

Ulempen er at der KUNNE snige sig en update ind lige efter første sætning, men der må være noget du kan genkende den rigtige record på, når du åbner den anden gang, Request.Cookies(\"bnlablabla\")(\"Username\") f.eks.

Set rs = myConn.Execute (\"SELECT TOP 1 ID FROM Users WHERE [user] = \'\"&Request.Cookies(\"bnlablabla\")(\"Username\")&\"\'\")

Og lav dog være med at bruge keywords som WHERE og USER som kolonnenavne, det er at bede om problemer :-)
Avatar billede medjeti Nybegynder
22. januar 2001 - 21:26 #4
Eller åbn databasen på ny og sig
strSQL = \"SELECT Top 1 (ID) FROM Users ORDER BY ID DESC\"

Session(\"ID\") = RS(\"ID\")

Det returnerer det sidst tilføjede recordset.
Avatar billede medjeti Nybegynder
22. januar 2001 - 21:34 #5
Ups, for sent... :o)
Avatar billede chris Nybegynder
22. januar 2001 - 21:37 #6
Eagleye\'s: løsning var den letteste og den virker.

takker for alle svar
Avatar billede chris Nybegynder
22. januar 2001 - 21:40 #7
hrrrmf det er sgu underligt

Set RSOnline = Server.CreateObject(\"ADODB.RecordSet\")

    sqlOnline = \"UPDATE users SET Online = \'false\' WHERE id = \"& session(\"id\")
    set rsOnline = myConn.execute(sqlOnline)

...vil ikke virke. bliver brugt i min global.asa under \"Sub Session_OnEnd\" det vil sige når brugeren smutter.
Avatar billede eagleeye Praktikant
22. januar 2001 - 21:49 #8
sqlOnline = \"UPDATE users SET Online = \'false\' WHERE id = \'\"& session(\"id\") & \"\'\"
Avatar billede zaknafein Praktikant
22. januar 2001 - 23:52 #9
Den sikreste måde at hive et nettop nyindsat id, ud på er ved hjælp af en trigger. ASP udfører ikke sine DB kald atomare, altså sådan at man er sikker på at der ikke er sket en anden handlign efterfølgende!

Hvis du bruger MS-SQL-server kan du oprette en trigger som vil retunere det nyindsatte id, FØR at der kan indsættes en anden record!!
FX
    sqlOnline = \"UPDATE users SET Online = \'false\' WHERE id = \"& session(\"id\")
    set rsOnline = myConn.execute(sqlOnline)

Nu vil rsOnline kun indeholde 1 kolonne som indeholder det nyindsatte ID.
MS-SQL-server sørger for at assigne resultatet af UPDATE-statement\'en til din variabel.. Hvis flere brugere trigger en update (næsten) samtidigt, vil du være sikker på at det rigtige id bliver returneret!!
Avatar billede chris Nybegynder
23. januar 2001 - 02:56 #10
hmmm jeg har fundet ud af hvorfor min:
sqlOnline = \"UPDATE users SET Online = \'false\' WHERE id = \"& session(\"id\")

ikke virker.

det er noget snask med Session_OnEnd i global.asa\'en
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester