D DiDjo Medlem sedan nov. 2002 544 inlägg Frågan 15 nov. 2002 19:23 #1 Hejsan hoppsan.... Hur jämför man 2 kollumner??? Jag skulle vilja jämföra när man loggar in och ut och sen spara det i en annan kollumn! I minuter alltså! Skulle gjärna vilja ha en färdig kod! Jag är inte så bra på att göra egna ibland!
Kollumnen som sparar tiden när man loggar in heter "datum" och när man loggar ut heter "datumut"
D DiDjo Medlem sedan nov. 2002 544 inlägg ???Går det att göra över huvudtaget???
L LarsG Medlem sedan dec. 2000 12 464 inlägg Du skall inte spara den typen av beräkningar i en kolumn. Utför dom när du behöver det.
q = "select datum,datumut from login where username = '" & replace(Username,"'","''") & "'"
set rs = connect.execute(q)
if not rs.eof then
response.write username & " har varit inloggad i " &_
datediff("n",cdate(rs("datum")),cdate(rs("datumut")) & _
" minuter"
end if
D DiDjo Medlem sedan nov. 2002 544 inlägg mmm men den skriver väl bara ut hur länge man är online just då??? Jag vill spara de varje gång så får man en total online tid! Men jag tar denna med :D tackar!
D DiDjo Medlem sedan nov. 2002 544 inlägg Med din kod LarsG fick jag detta fel:
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "2002-11-15 20:34:09 "]'
/statestik.asp, line 192
Ska väl spara in och utloggnings tiden på ett annat sätt än now()
L LarsG Medlem sedan dec. 2000 12 464 inlägg Ja, det var ju en olikfärgad häst
connect.execute "update t " & _
" set online = online + datediff('n',datum,#" & datumut & _
"#),datumut = #" & datumut & _
"# where username = '" & replace(username,"'","''") & "'"
Vacker Access-kod som kan användas vid utloggning. Kom bara i håg att lägga in 0 för kolumnen online när du skapar nya användare.
D DiDjo Medlem sedan nov. 2002 544 inlägg i din senare kod vart felet:
Microsoft JET Database Engine error '80040e07'
Syntax error in date in query expression 'online + datediff('n',datum,##)'.
/signout.asp, line 11
Så här la jag in koden...
<!--#include file="conn.asp"-->
<%
username = Request.Cookies("username")
Set rsuser = Server.CreateObject("ADODB.Recordset")
rsuser.open "users WHERE username = '" & username & "'", conn, 3, 3
rsuser("onoff") = false
rsuser("datumut") = Now
rsuser.Update
conn.execute "update users " & _
" set online = online + datediff('n',datum,#" & datumut & _
"#),datumut = #" & datumut & _
"# where username = '" & replace(username,"'","''") & "'"
rsUser.close
set rsUser = nothing
conn.close
set conn = nothing
'Set the cookie to nothing
Response.Cookies("username") = ""
Response.Cookies("level") = ""
Response.Redirect("index.asp")
%>
I din första kod vart felet:
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "2002-11-15 21:25:13 "]'
/statestik.asp, line 192
På den gissar jag på att jag ska spara tiden annurlunda än now()
L LarsG Medlem sedan dec. 2000 12 464 inlägg Det skall räcka med denna kod, det behövs inget recordset alls.
conn.execute "update users " & _
" set online = online + datediff('n',datum,now())," & _
" datumut = now() " & _
" where username = '" & replace(username,"'","''") & "'"
D DiDjo Medlem sedan nov. 2002 544 inlägg Så här vart felet:
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.
/signout.asp, line 11
L LarsG Medlem sedan dec. 2000 12 464 inlägg Då är det något kolumnnamn som inte stämmer med din tabelldefinition. (Jag gissade när jag skrev frågan.)
D DiDjo Medlem sedan nov. 2002 544 inlägg jo! Jag skapade en ny som heter online! Av typen numbers! (Då blir de ju 0 när en ny kommer dit!) Datum finns och datumut! Alla i tabellen users! Username finns också! Jag använder mig inte utav ID!
L LarsG Medlem sedan dec. 2000 12 464 inlägg Ok
Om du testar
q = "update users " & _
" set online = online + datediff('n',datum,now())," & _
" datumut = now() " & _
" where username = '" & replace(username,"'","''") & "'"
response.write "SQL:" & q
response.end
att köra resultatet av utskriften direkt i Access, vad ger det?
D DiDjo Medlem sedan nov. 2002 544 inlägg hmmmm jag provade att ändra från users till user... då gick de... Men då sa den:
Microsoft JET Database Engine error '80040e14'
Syntax error in UPDATE statement.
/signout.asp, line 11
Raden:
conn.execute "update user " & _
L LarsG Medlem sedan dec. 2000 12 464 inlägg Vad blir resultatet av utskriften?
Det kan vara ett problem med reserverade ord, t.ex. user navänds i många dialekter. För att undvika sådant så kan man använda följande syntax
update [user] set ...
D DiDjo Medlem sedan nov. 2002 544 inlägg aha! Du hade skrivit en tråd mellan! Men jag provade detn skrev ut så här;
SQL:update users set online = online + datediff('n',datum,now()), datumut = now() where username = 'KeNNy'
En vit sida bara med den texten!
L LarsG Medlem sedan dec. 2000 12 464 inlägg Jo, eftersom det ligger response.end efteråt så avslutas sidan där.
fungerar den frågan direkt i Access?
D DiDjo Medlem sedan nov. 2002 544 inlägg OJ!!!!!!!! Mitt fel! Hade visst inte laddat upp den modifierade db! Förlåt :(
Men nu är rätt uppe! Den skrev inte in något! Den står fortfarande på 0! Och jag var inne i en minut och 24 sec!
L LarsG Medlem sedan dec. 2000 12 464 inlägg Du kan ju testa om det är någon post som uppdateras
q = "update ..."
connect.execute q,rows,128
if rows = 1 then
response.write "1 post uppdaterades "
elseif rows = 0 then
response.write "Inga poster uppdaterades "
else
response.write Rows & " poster uppdaterades "
end if
En annan sak som du kan kontrollera är om online innehåller null eller 0. Om det ligger null i kolumnen så förblir det null även om man lägger till ett värde.
Du kan hantera det i din updatesats
q = "update users " & _
" set online = iif(online is null,0,online) + datediff('n',datum,now())," & _
" datumut = now() " & _
" where username = '" & replace(username,"'","''") & "'"
D DiDjo Medlem sedan nov. 2002 544 inlägg Med den första koden sa den:
Microsoft JET Database Engine error '80040e14'
Syntax error in query. Incomplete query clause.
/signout.asp, line 13
Den andra var precis som innan! Inget hände!
Jag vet att den uppdaterar posterna! För utloggnings tiden ändras och om de e online lr inte!
L LarsG Medlem sedan dec. 2000 12 464 inlägg Jaha, hur ser värdena i kolumnen datum ut? Uppdateras dom riktigt vid inloggning eller ligger det null i kolumnen?