Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Det smarteste er at lave selecten så præcis som muligt. Så det resulterende recordset kun indeholder relevante poster. Så det med at bygge en sql-streng op.
SQL = "SELECT * FROM tabel WHERE ID <> 0" If request.form("form1") <> "" Then SQL = SQL & " AND felt1 = '" & request.form("form1)" & "'" End If If request.form("form2") <> "" Then SQL = SQL & " AND felt2 = '" & request.form("form2)" & "'" End If osv osv osv Set rs = Conn.Execute(SQL)
Men jeg roder altså med det her split, jeg har prøvet således i SQL:
If request.form("bil") <> "" Then myarr = split(Request.Form("bil"),", ") For t = 0 To ubound(myarr) SQL = SQL & " AND bil = '" & myarr(t) & "'" End If
If request.form("bil") <> "" Then myarr = split(Request.Form("bil"),", ") For t = 0 To ubound(myarr) SQL = SQL & " AND bil = '" & myarr(t) & "'" Next End If
men hvis nu man kan vælge flere i den selectboks så skal du nok bygge den del op over en OR-statement. feltet "bil" kan jo næppe både være det ene og det andet.
Meget fint :-) jeg har ændret det så jeg kun har et multifelt nu og det virker fint.
En sidste ting i denne tråd. Jeg vil gerne kunne vise online på udtrækket, så jeg har indsat følgende i SQL'en, men jeg får kun den første ud, kan/skal man lave en løkke her?
If request.form("online") <> "" Then
set rs = conn.Execute(SQL) isOnline = false For n = 1 To UBound(arrUsers) -1 if arrUsers(n) = rs("bruger") then isOnline = true exit for end if next SQL = SQL & " AND bruger = '" & arrUsers(n) & "'" End If
hvis du allerede har executed din SQL som du gør i ovenstående linie 3 så kan du vel ikke tilføje mere til SQL'en som du forsøger på i andensidste linie eller?
Hvor/hvordan afgøres det om man er online eller ej?
Sub WriteOnLineUsers() Dim arrUsers, isOnline, n arrUsers = Split(Application("Onlineusers"), ",")
I SQL'en har jeg forsøgt:
If request.form("online") <> "" Then isOnline = false For n = 1 To UBound(arrUsers) -1 isOnline = true exit for next SQL = SQL & " AND bruger = '" & arrUsers(n) & "'" End If
If request.form("online") <> "" Then SQL = SQL & " AND bruger IN (" & Application("Onlineusers") & ")" End If
alt afhængig af hvordan det er gemt i din application kan det dog være den skal formateres på en lidt anden måde... hvis muligt brug evt id-numre i stedet for fuldt navn.
Sub Application_OnEnd ' Skriv kode som skal køres når applikationen (serveren) stoppes End Sub
Sub Session_OnStart ' Forøger antallet af brugere med 1, når en session startes Application.Lock Application("ActiveUsers") = Application("ActiveUsers") + 1 Application.UnLock End Sub
Sub Session_OnEnd ' Reducer antallet af brugere med 1, når en session afsluttes
If Len(Session("brugernavn")) > 0 Then Application.Lock Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("brugernavn") & ",", "") Application.UnLock End If
Application.Lock Application("ActiveUsers") = Application("ActiveUsers") - 1 Application.UnLock End Sub </SCRIPT>
If request.form("online") <> "" Then SQL = SQL & " AND bruger IN (" & Application("Onlineusers") & ")" End If
for jeg fejlen:
MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]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 'obhat,kalle,)
Online bruger kommer ind "'obhat,kalle,)" så det skal måske splittes op på en eller anden måde?
kan laves på flere måder - ville som udgangspunkt nok sørge for at applicationen leverede det rigtige resultat. En alternativ løsning kan være noget a la
myarr = split(Application("Onlineusers"),",") for t = 0 to ubound(myarr)-1 If BLA = "" Then BLA = "'" & myarr(t) & "'" Else BLA = BLA & ",'" & myarr(t) & "'" End If next
[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-nt]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 ''obhat','kalle')' at line 1
myarr = split(Request.Form("form"),", ") For t = 0 To ubound(myarr) SQL = SQL & " AND noget = '" & myarr(t) & "'" Next
Hvis der kun markeres en ting, meldes fejlen:
Indekset er uden for området: 't'
Synes godt om
Ny brugerNybegynder
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.