CalevanMedlem sedan maj 20031 173 inlägg Hej!
Just nu ser min kod ut så här (den fungerar). Jag väljer ut alla poster i databasen som har rätt värde på "ar" och sen kollar jag med hjälp av en funktion som heter behorighet ifall den aktuella kategorin får visas. Men jag skulle vilja baka in kollen om den får visas redan när jag skapar recordsettet eftersom jag får ett onödigt stort recordsett och eftersom jag vill visa texten "Inga kategorier finns för detta år" om det inte finns några kategorier som användaren ska få se.
[I]connectar[/I]
SQL = "SELECT * FROM kategori WHERE ar=" & ar & " ORDER BY katalog ASC"
RecSet.Open SQL, Connect, 3, 3
IF RecSet.EOF THEN
Response.Write "Inga kategorier finns för detta år"
ELSE
IF behorighet(Session("UserId"),behorig) = "TRUE" THEN
[I]visar kategorin[/I]
END IF
[I]disconnectar[/I]
Någon som förstår vad jag menar och som kanske har något förslag?
Tack!
Vad gör funktionen behorighet? Gör den också en slagning mot databasen kanske? I så fall borde det gå att baka ihop den SQL-frågan med den andra och få upp enbart de poster användaren är behörig till mha en fråga...
CalevanMedlem sedan maj 20031 173 inlägg nix, bara kollar vad man loggat in som och vad kategorin har för behörighet. "behorig" kommer altså från den första SQL satsen.
CalevanMedlem sedan maj 20031 173 inlägg Har inte testat detta, men det borde funka. Här ser ni tydligt vad det är jag vill göra, fast jag undrar om man kan göra det med en SQL sats.
[I]connectar[/I]
SQL = "SELECT * FROM kategori WHERE ar=" & ar & " ORDER BY katalog ASC"
RecSet.Open SQL, Connect, 3, 3
DO UNTIL RecSet.EOF
behorig = RecSet("behorighet")
IF NOT behorighet(Session("UserId"),behorig) = "TRUE" THEN
RecSet.Delete
RecSet.Update
END IF
RecSet.MoveNext
LOOP
IF RecSet.EOF THEN
Response.Write "Inga kategorier finns för detta år"
ELSE
[I]visar kategorier[/I]
END IF
funktionen "behorighet ser ut så här:
Function behorighet(UserID,behorig)
IF UserID = "hej" OR UserID = behorig THEN
behorighet="TRUE"
Exit Function
ELSE
behorighet="FALSE"
END IF
End Function
Ok, då skulle man kunna göra nåt sånt här. Kolla först vad användarid har för värde. Är det "hej" kör du den SQL-fråga du gör redan idag, annars bakar du in villkoret för behorig i frågan och kör den. Funktionen behorighet utgår...
connectar
anvandarid = Session("UserId")
IF anvandarid = "hej" THEN
SQL = "SELECT * FROM kategori WHERE ar=" & ar & " ORDER BY katalog ASC"
ELSE
SQL = "SELECT * FROM kategori WHERE ar=" & ar & " AND behorighet = " & anvandarid & " ORDER BY katalog ASC"
END IF
RecSet.Open SQL, Connect, 3, 3
IF RecSet.EOF THEN
Response.Write "Inga kategorier finns för detta år"
ELSE
visar kategorier
END IF
CalevanMedlem sedan maj 20031 173 inlägg bra idé att försöka vända på det, ska fundera lite på det. Problemet med modellen du beskrev är att funktionen begorighet ska byggas ut så att flera vilkor kan fungera. det kan tex vara lika med "hej", "banan" eller 10 andra saker. Så går det att baka in en funktion i SQL frågan? annars får jag tänka om lite, och göra någon variant av det du föreslog Agneta!
Du menar alltså att ett antal användare, exv "banan" och "hej" ska ha behörighet att se alla kategorier medan andra bara ska få se "sina egna" kategorier, dvs där deras eget användarId står i kolumnen behorighet?
I så fall kan du ju göra en funktion behorighet som du anropar i IF-satsen. Så här:
connectar
anvandarid = Session("UserId")
IF behorighet(anvandarid) THEN
SQL = "SELECT * FROM kategori WHERE ar=" & ar & " ORDER BY katalog ASC"
ELSE
SQL = "SELECT * FROM kategori WHERE ar=" & ar & " AND behorighet = " & anvandarid & " ORDER BY katalog ASC"
END IF
RecSet.Open SQL, Connect, 3, 3
IF RecSet.EOF THEN
Response.Write "Inga kategorier finns för detta år"
ELSE
visar kategorier
END IF
Funktionen behorighet skulle se ut så här. Den byggs ut med en OR för varje UserID med fullständig behörighet.
Function behorighet(UserID)
behorighet = UserID = "hej" OR UserId = "banan" OR UserID = "VadSomHelst"
End Function
CalevanMedlem sedan maj 20031 173 inlägg ah!! tack! Detta ska jag testa så fort jag får tillfälle (till helgen) återkommer med resultatet här. tack!
CalevanMedlem sedan maj 20031 173 inlägg problemet är ju att funktionen behorighet behöver både Session("UserId") och det värdet som hamnar i RecSet(behorig) som indata, så att göra en sådan if sats som du har gjort innan SQL satserna fungerar ju inte.
Används funktionen behorighet till något annat också kanske? Min tanke var att du skulle skriva om den så att den bara tar Session("UserId") som inparameter... Hänsyn till vad som står i databaskolumnen behorig tas ju i SQL-frågan som vi skrivit i ELSE-grenen (Eller heter kolumnen behorighet? Du har skrivit olika i olika inlägg.)
För att uppnå den funktionalitet jag uppfattar att du beskriver kan du antingen göra en funktion som kollar om påloggad användare är behörig att se alla kategorier eller också lägga den kontrollen direkt i IF:en så här (det är ju bara att lägga till en OR för varje användare som ska ha full behörighet):
connectar
anvandarid = Session("UserId")
IF anvandarid = "hej" OR anvandarid = "banan" OR anvandarid = "NåtAnnat" THEN
SQL = "SELECT * FROM kategori WHERE ar=" & ar & " ORDER BY katalog ASC"
ELSE
SQL = "SELECT * FROM kategori WHERE ar=" & ar & " AND behorighet = " & anvandarid & " ORDER BY katalog ASC"
END IF
RecSet.Open SQL, Connect, 3, 3
IF RecSet.EOF THEN
Response.Write "Inga kategorier finns för detta år"
ELSE
visar kategorier
END IF
Om denna kod inte gör vad du vill så har jag nog inte förstått frågan :)