webForumDet fria alternativet

Jämföra....

ASP

30 svar · 488 visningar · startad av DiDjo

Medlem sedan nov. 2002544 inlägg
Frågan#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"

Medlem sedan nov. 2002544 inlägg
#2

???Går det att göra över huvudtaget???

Medlem sedan dec. 200012 464 inlägg
#3

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
Medlem sedan nov. 2002544 inlägg
#4

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!

Medlem sedan nov. 2002544 inlägg
#5

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()

Medlem sedan dec. 200012 464 inlägg
#6

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.

Medlem sedan nov. 2002544 inlägg
#7

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()

Medlem sedan dec. 200012 464 inlägg
#8

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,"'","''") & "'"
Medlem sedan nov. 2002544 inlägg
#9

Så här vart felet:

Microsoft JET Database Engine error '80040e10' 

No value given for one or more required parameters. 

/signout.asp, line 11
Medlem sedan dec. 200012 464 inlägg
#10

Då är det något kolumnnamn som inte stämmer med din tabelldefinition. (Jag gissade när jag skrev frågan.)

Medlem sedan nov. 2002544 inlägg
#11

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!

Medlem sedan dec. 200012 464 inlägg
#12

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?

Medlem sedan nov. 2002544 inlägg
#13

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 " & _
Medlem sedan dec. 200012 464 inlägg
#14

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 ...
Medlem sedan nov. 2002544 inlägg
#15

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!

Medlem sedan dec. 200012 464 inlägg
#16

Jo, eftersom det ligger response.end efteråt så avslutas sidan där.

fungerar den frågan direkt i Access?

Medlem sedan nov. 2002544 inlägg
#17

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!

Medlem sedan dec. 200012 464 inlägg
#18

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,"'","''") & "'"
Medlem sedan nov. 2002544 inlägg
#19

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!

Medlem sedan dec. 200012 464 inlägg
#20

Jaha, hur ser värdena i kolumnen datum ut? Uppdateras dom riktigt vid inloggning eller ligger det null i kolumnen?

265 ms totalt · 4 externa anrop · v20260731065814-full.b8c362d6
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)