webForumDet fria alternativet

Loggas ut

3 svar · 390 visningar · startad av Biasse

BiasseMedlem sedan aug. 2003480 inlägg
#1

Jag har i min accessdatabas fältet "online_datum" där tiden uppdateras var annan minut. Koden nedan ska kontrollera om "online_datum" är mer än 5 minuter gammal och då sätta de som har online=1 till 0.

Men den loggar ut alla och jag hittar inte felet så jag frågar er :)

Set onlineUpdate = Connect.Execute("SELECT * FROM admin WHERE online = 1")
Do Until onlineUpdate.EOF

n = now()
d = onlineUpdate("online_datum")

' Minuter till utloggning
If DateDiff("n", d, n) > 5 Then
Connect.execute("UPDATE admin SET online = 0")
End If

onlineUpdate.MoveNext
Loop

onlineUpdate.Close : Set onlineUpdate = Nothing
@ndersMedlem sedan juni 200032 969 inlägg
#2

Du har ju ingen where-sats i din update, så det är inte så konstigt att alla poster uppdateras.

BiasseMedlem sedan aug. 2003480 inlägg
#3

Är jag rätt ute så här?

Connect.execute("UPDATE admin SET online = 0 WHERE DateDiff('n', online_datum, #"&Now()&"#) > 4")
@ndersMedlem sedan juni 200032 969 inlägg
#4

Det enklaste är att testa - gör en select med samma villkor.
Annars är det alternativet det bästa - för då kan du skippa både den första selectfrågan, och loopar och annat.

Men det är onödigt att konkatenera in datum och tid från ASP - det gör det bara onödigt kladdigt. Byt:

... #"&Now()&"# ...

mot:

... Now() ...

Jag kan inte svära på att datediff funkar i access - men det märker du ju när du testar. =)

126 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)