hi,
Ich habe aber nun auch User, die mehrere Berechtigungen haben, z.B. (1 or 2).
Also läuft das auf eine Berechtigungsstufe von binär 11, bzw. dezimal 3 hinaus.
Die sollen nun alle Daten sehen, die entweder das 1er Bit ODER das 2er Bit haben.
Bei einer UND-Verknüpfung der beiden binären Werte soll also das zu prüfende Bit "stehen bleiben", d.h. im Ergebnis noch vorhanden sein.
datensatz1 1
1 AND 3 = 3datensatz2 2
2 AND 3 = 2datensatz3 3 (1 or 2)
3 AND 3 = 3
datensatz4 5 (1 or 4)
5 AND 3 = 1datensatz5 7 (1 or 2 or 4)
7 AND 3 = 3Für alle diese Beispiele wäre ein User mit Berechtigung 1 oder 2 also berechtigt.
Für einen Berechtigungslevel von 4 wäre er hingegen nicht berechtigt, denn 4 AND 3 = 0.
Alles korrekt.
Also ganz einfach ausgedrückt:
- Wenn der User das 1er Bit hat, darf er alle Daten sehen, die das 1er-Bit auch haben.
- Wenn der User das 2er Bit hat, darf er alle Daten sehen, die das 2er-Bit auch haben.
...
Aber wie drück ich das jetzt in der SQL-Query aus?
In der Variable berechtigung steht die Berechtigung des Users (dezimal), also z.B. berechtigung = 3
sql = "select * from tabelle1 where (projektrecht & " &berechtigung& ") = " & [... da weiß ich nicht mehr weiter ...]
LG, Gerd