Ik zit met het volgende probleem. Ik ben van plan een rechtensysteem voor ons buurt netwerk op te zetten. (+/- 15 gebruikers) Nu wil ik alle ingestelde rechten gaan bijhouden in een database. Dat is tot zover nog geen enkel probleem.
Ik heb een admin pagina gemaakt waarin ik kan zien wie welke rechten over welke map heeft. Hier kan ik ook gebruikers rechten geven of nemen. Nu zou ik echter graag een lijstje willen hebben met de mensen die nog geen rechten voor die map hebben. (zodat ik alleen maar 1 knop hoef in te drukken) En dat lukt dus totaal niet.
Mijn database (Access) bestaat uit meerdere tabellen, de voor deze klus benodigde tabellen zijn Rechten en Users. De rechten tabel is als volgt opgebouwd, voor elke map komt er een record in, in deze record staat ook de userID van de bestreffende gebruiker, de naam van deze gebruiker kan dan weer uit de tabel Users gevist worden.
Voorbeeld: (dus 3 gebruikers hebben rechten voor deze map)
Map 13 User 1 User 1 = Piet
Map 13 User 3 User 3 = Paard
Map 13 User 5 User 5 = Sint
Ik zou dus graag een lijstje willen hebben waar nu user 2 en user 4 in komen te staan omdat ze nog geen rechten hebben. Een oplossing die ik wel werkend zou kunnen krijgen zou zijn om een Query te openen met daarin weer een Query die checkt of de gebruiker er al in zit. Dit is echter wat omslachtig en volgens mij ook niet de snelste manier. (jah, met 15 gebruikers zal snelheid wel geen probleem zijn, maar ik ben nog aan het leren en zou het daarom zo net mogelijk willen doen, voor in de toekomst
)
Ik had de volgende Querys al geprobeerd:
Resultaat is dat hij wel goed kijkt en ook de goede users eruit vist, in combinatie met een klein stukje IF THEN code. Maar het probleem is dat hij het ID van de map niet bekijkt, zodat ik voor alle mappen hetzelfde resultaat krijg.
Dit probeerde ik te voorkomen door de sting wat aan te passen:
Nu krijg ik te zien wie er wel rechten hebben, nu dacht ik dus dat ik er mooi een NOT in zet en dan de selectie zou kunnen omdraaien, maar dat mocht ook niet baten.
Een andere variant die ik bedacht had was:
Dit werkt tot op zekere hoogte, ik krijg namelijk alle gebruikers te zien x het aantal records = 5 x 3 = 15, min 1 x de users met de rechten = 15 – 3 = 12. Dus het goede resultaat is er nog niet.
Ik vroeg me dus af of iemand een nette oplossing heeft voor mijn probleem, zodat ik dit voor in vervolg weet.
(p.s. uiterraard heb ik zelf ook gezocht, het hele weekend al
maar ik kon echt niets meer vinden, en ook heb ik nog heel wat varianten geprobeerd op mijn query's maar die zijn denk ik zo fout als maar wat, alleen het idee al
)
Ik heb een admin pagina gemaakt waarin ik kan zien wie welke rechten over welke map heeft. Hier kan ik ook gebruikers rechten geven of nemen. Nu zou ik echter graag een lijstje willen hebben met de mensen die nog geen rechten voor die map hebben. (zodat ik alleen maar 1 knop hoef in te drukken) En dat lukt dus totaal niet.
Mijn database (Access) bestaat uit meerdere tabellen, de voor deze klus benodigde tabellen zijn Rechten en Users. De rechten tabel is als volgt opgebouwd, voor elke map komt er een record in, in deze record staat ook de userID van de bestreffende gebruiker, de naam van deze gebruiker kan dan weer uit de tabel Users gevist worden.
Voorbeeld: (dus 3 gebruikers hebben rechten voor deze map)
Map 13 User 1 User 1 = Piet
Map 13 User 3 User 3 = Paard
Map 13 User 5 User 5 = Sint
Ik zou dus graag een lijstje willen hebben waar nu user 2 en user 4 in komen te staan omdat ze nog geen rechten hebben. Een oplossing die ik wel werkend zou kunnen krijgen zou zijn om een Query te openen met daarin weer een Query die checkt of de gebruiker er al in zit. Dit is echter wat omslachtig en volgens mij ook niet de snelste manier. (jah, met 15 gebruikers zal snelheid wel geen probleem zijn, maar ik ben nog aan het leren en zou het daarom zo net mogelijk willen doen, voor in de toekomst
Ik had de volgende Querys al geprobeerd:
code:
1
2
| SQL = "SELECT Rechten.User, Users.ID, Users.Naam FROM Users LEFT JOIN Rechten ON Rechten.User = Users.ID" |
Resultaat is dat hij wel goed kijkt en ook de goede users eruit vist, in combinatie met een klein stukje IF THEN code. Maar het probleem is dat hij het ID van de map niet bekijkt, zodat ik voor alle mappen hetzelfde resultaat krijg.
Dit probeerde ik te voorkomen door de sting wat aan te passen:
code:
1
2
3
| SQL = "SELECT Rechten.User, Users.ID, Users.Naam FROM Users LEFT JOIN Rechten ON Rechten.User = Users.ID WHERE Rechten.Map LIKE '%" & ID & "%'" |
Nu krijg ik te zien wie er wel rechten hebben, nu dacht ik dus dat ik er mooi een NOT in zet en dan de selectie zou kunnen omdraaien, maar dat mocht ook niet baten.
Een andere variant die ik bedacht had was:
code:
1
2
| SQL = "SELECT * FROM Users, Rechten WHERE Rechten.User NOT LIKE Users.ID" |
Dit werkt tot op zekere hoogte, ik krijg namelijk alle gebruikers te zien x het aantal records = 5 x 3 = 15, min 1 x de users met de rechten = 15 – 3 = 12. Dus het goede resultaat is er nog niet.
Ik vroeg me dus af of iemand een nette oplossing heeft voor mijn probleem, zodat ik dit voor in vervolg weet.
(p.s. uiterraard heb ik zelf ook gezocht, het hele weekend al