BiasseMedlem sedan aug. 2003480 inlägg 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 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 Ä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 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. =)