Avatar billede yezper Nybegynder
12. februar 2001 - 18:55 Der er 11 kommentarer og
2 løsninger

Count

Hej!

Jeg er igang med at lave et script, hvor jeg har brug for at begrænse antallet af samtidige brugere, og regnede med at bruge denne kode:

\' Count users
MaxConnSQL = \"SELECT * FROM Config_LicenseSettings WHERE LicenseKey = 10050;\"
Set MaxConnExec = Conn.Execute(MaxConnSQL)
ActiveSQL = \"SELECT * FROM Users_Current WHERE SessionActive = \'Y\'\"
ActiveCountSQL = \"SELECT COUNT(Counter.ID) AS CountID FROM (\" & ActiveSQL & \") AS Counter;\"
Set ActiveCountExec = Conn.Execute(ActiveCountSQL)
MaxConns = MaxConnExec.Fields(\"LicenseContent\")
CurrentConns = ActiveCountExec.Fields(\"CountID\")
If CurrentConns => MaxConns Then
    Response.Redirect(\"/main.asp?page=main&error=toomanyusers\")
    Response.End
End If

Hvis antallet af samtidige brugere overstiger eller er lig med det tal der står i LicenseContent i LicenseKey nr. 10050, skal systemet afvise yderligere logins.

Det virker dog ikke umiddelbart. Er der nogen der har et bud på hvorfor?
Avatar billede brain Nybegynder
12. februar 2001 - 19:04 #1
ActiveCountSQL = \"SELECT COUNT(Counter.ID) AS CountID FROM (\" & ActiveSQL & \") AS Counter;\"

skal nok være

ActiveCountSQL = \"SELECT COUNT(Counter.ID) AS CountID FROM (\" & ActiveSQL & \")\"

og så vil antallet stå i CountID
Avatar billede yezper Nybegynder
12. februar 2001 - 19:08 #2
Det virkede desværre ikke.
Andre forslag? :-)
Avatar billede brain Nybegynder
12. februar 2001 - 19:11 #3
Hvad er fejlen?
Avatar billede yezper Nybegynder
12. februar 2001 - 19:13 #4
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Line 1: Incorrect syntax near \';\'.
/login.asp, line 21

line 21:
Set ActiveCountExec = Conn.Execute(ActiveCountSQL)

ActiveCountSQL:
ActiveCountSQL = \"SELECT COUNT(Counter.ID) AS CountID FROM (\" & ActiveSQL & \");\"
Avatar billede yezper Nybegynder
12. februar 2001 - 19:14 #5
Når ActiveCountSQL ser således ud:

ActiveCountSQL = \"SELECT COUNT(Counter.ID) AS CountID FROM (\" & ActiveSQL & \") AS Counter;\"

virker koden, men der er ikke begrænsning på antallet af samtidige brugere, hvilket er meget vigtigt...
Avatar billede brain Nybegynder
12. februar 2001 - 19:14 #6
prøv det her

\' Count users
MaxConnSQL = \"SELECT * FROM Config_LicenseSettings WHERE LicenseKey = 10050;\"
Set MaxConnExec = Conn.Execute(MaxConnSQL)
ActiveSQL = \"SELECT * FROM Users_Current WHERE SessionActive = \'Y\'\"
ActiveCountSQL = \"SELECT COUNT(*) AS CountID FROM Users_Current WHERE SessionActive = \'Y\'\"
Set ActiveCountExec = Conn.Execute(ActiveCountSQL)
MaxConns = MaxConnExec.Fields(\"LicenseContent\")
CurrentConns = ActiveCountExec.Fields(\"CountID\")
If CurrentConns => MaxConns Then
    Response.Redirect(\"/main.asp?page=main&error=toomanyusers\")
    Response.End
End If

Avatar billede brain Nybegynder
12. februar 2001 - 19:15 #7
hvis du ikke bruger ActiveSQL længere nede, kan du også slette den linje hvor den bliver sat
Avatar billede yezper Nybegynder
12. februar 2001 - 19:19 #8
Virkede hellerikke... Den lader også brugerne passere. Også selvom ActiveCountSQL ser således ud:

ActiveCountSQL = \"SELECT COUNT(ID) AS CountID FROM Users_Current WHERE SessionActive = \'Y\'\"

istedet for:

ActiveCountSQL = \"SELECT COUNT(*) AS CountID FROM Users_Current WHERE SessionActive = \'Y\'\"
Avatar billede brain Nybegynder
12. februar 2001 - 19:22 #9
prøv at response.write både CurrentConns og MaxConns. Hvad giver det?
Avatar billede yezper Nybegynder
12. februar 2001 - 19:24 #10
Ha! tror jeg har fundet fejlen...
Jeg selecter fra Users_Current, inden der er skrevet en session ind... Så er det jo ikke så mærkeligt, at det ikke virker...
Avatar billede yezper Nybegynder
12. februar 2001 - 19:27 #11
Lav et svar, så giver jeg dig 30 point for dine forslag.
Avatar billede brain Nybegynder
12. februar 2001 - 19:36 #12
et svar
Avatar billede yezper Nybegynder
12. februar 2001 - 19:37 #13
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester