SELECT status, active_check, com_users.userid FROM com_users LEFT JOIN com_active USING (userID)
skulle jag nog tro att du menar i Mysql.
17 svar · 513 visningar · startad av Asa
Vill ha hjälp att ändra denna kod så den blir bättre och funkar som den ska. Gärna exempel för MySQL databas och Access databas.
DT = Now()
Set RS = Conn.Execute("Select U.status,A.active_check,U.userid From com_users U, com_active A Where A.userID=U.userId")
Do Until RS.EOF
If RS(0) = 1 And DateDiff("n", RS(1), DT) > 45 Then
Conn.Execute("Update com_users Set status=0 Where userid=" & FixaTecken(RS(2)))
Conn.Execute("Update com_active Set status_var='Ej inloggad' Where userid=" & FixaTecken(RS(2)))
End If
RS.MoveNext
Loop
RS.Close:Set RS=Nothing
SELECT status, active_check, com_users.userid FROM com_users LEFT JOIN com_active USING (userID)
skulle jag nog tro att du menar i Mysql.
Men Checken i loopen verkar strula lite. Har jag skrivit fel kanske? Där den kollar tiden.. Med DateDiff..
Asa skrev:
Men Checken i loopen verkar strula lite. Har jag skrivit fel kanske? Där den kollar tiden.. Med DateDiff..
Ja, kanske har du skrivit fel. Skriv ut värdena och testa. Glöm inte att subtypskonvertera heller. Strängen "1" är ju inte samma sak som siffran 1 till exempel.
Update com_users
Set status=0
Where userid in (
select userID
from com_active
where datediff('n',active_check,now()) > 45)
and status = 1
Update com_active
Set status_var = 'Ej inloggad'
where datediff('n',active_check,now()) > 45
and userid in (
select userid
from com_users
where status = 1)
Gör update direkt och sluta fjanta runt med recordset.
Jag förstår inte din datamodell såtillvida vilken nytta du har av tabellen com_active. Varför räcker det inte med com_users?
I com_active kollas tiden då man senast var aktiv samt var man är på sidan. Nån sa att jag skulle dela så dessa värden låg i en egen tabell.
Koden funkar ej. BLir felmess.
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select userID from com_active where datediff('n',active_check,n
/applikationer/community/com_large/login.asp, line 16
bortredigerat
http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
red.
Redigerade bort en osanning.
Jo, now() finns i Mysql. curdate() returnerar enbart datum och inte tid ...
Det är datediff som har olika syntax och semantik i Mysql och Access. Den kod som jag skrev var ämnad för Access. I Mysql så får man använda
date_add(active_check,interval 45 minute) < now()
Ahh, okej! Tackar
Blir följande fel i denna kod.
Conn.Execute("Update com_users Set status=0 Where userid in (select userID from com_active where date_add(active_check,interval 45 minute) < now()) and status = 1")
Conn.Execute("Update com_active Set status_var = 'Ej inloggad' where date_add(active_check,interval 45 minute) < now() and userid in (select userid from com_users where status = 1)")
Felmess:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select userID from com_active where date_add(active_check,inter
/applikationer/community/com_large/login.asp, line 7
Rad 7 är den övre raden av de två...
Är det onödigt att ha tiden samt aktiviteten i en egen tabell som jag har? Nån sa till mig att det var bra att ha så...
Vilken version av MySQL använder du?
4.0.17-nt står det i MySQL Front Sen skall jag använda det på en som har version 4.0.20a-nt
Hmm, hur skall det stå då?
Fick denna kodsnutt av en kille som verkade fungera. Nån som har nån kommentar till det?!
UPDATE com_users, com_active SET
com_users.status=0, com_active.status_var='Ej inloggad'
WHERE com_users.status=1 AND com_active.userid=com_users.userid
AND com_active.active_check <= (now() - interval 45 minute)
Den koden verkar ändå inte fungera som den ska. Har testat dölja kodsnutten så det är den som strular och gör så man loggas ut fast man är aktiv. Nån som ser varför i min kodsnutt? Använder MySQL databas.
status är tinyint, status_var är varchar, userid är int och active_check är datetime.
Tar tillbaka det. Verkar fungera iallafall.