vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Enum mit Flags() Attribut in einer Select-Anweißung verwenden? 
Autor: WaldiMaywood
Datum: 30.06.04 18:58

Hallo zusammen,

Angenommen ein DataTable gefüllt mit Benutzern und ihre dazugehörigen Rechte. Abgebildet werden die Rechte ähnlich wie bei Unix bzw. Linux.
Also: Ausführen = 1, Schreiben = 2, Lesen = 4.
Demnach wäre 5 = Ausführen und Lesen.

Folglich habe ich dieses Enum angelegt:
<Flags()> Private Enum Rechte
        Ausführen = 1
        Schreiben = 2
        Lesen = 4
    End Enum
So in etwa wird das DataTable zur Laufzeit gefüllt (nur ein Beispiel):
        Dim dt As DataTable
        dt = New DataTable
        Dim r As DataRow
 
        dt.Columns.Add("User", GetType(Integer))
        dt.Columns.Add("Rechte", GetType(Integer))
 
        r = dt.NewRow
        r(0) = 1
        r(1) = Rechte.Ausführen Or Rechte.Lesen
        dt.Rows.Add(r)
 
        r = dt.NewRow
        r(0) = 2
        r(1) = Rechte.Ausführen Or Rechte.Schreiben
        dt.Rows.Add(r)
 
        r = dt.NewRow
        r(0) = 3
        r(1) = Rechte.Ausführen Or Rechte.Schreiben Or Rechte.Lesen
        dt.Rows.Add(r)
	'// usw.
So und jetzt meine eigentliche Frage bzw. das Problem:

Wenn ich jetzt alle Benutzer ermitteln möchte die Leserechte haben, könnte man z.b. so vorgehen:
  Dim r() As DataRow = dt.Select("")
        For Each dr As DataRow In r
            If CInt(dr(1)) And Rechte.Lesen Then
                Debug.WriteLine(dr(0).ToString)
            End If
        Next
Das funktioniert zwar einwandfrei, aber das ist nicht die Lösung. Einfach zu umständlich. Ich dachte eher an so eine Lösungsmöglichkeit:
        Dim filter As String = "Recht = XXX" '// z.b. nur alle User die 
        ' Leserechte (1) haben
        Dim r() As DataRow = dt.Select(filter)
        For Each dr As DataRow In r
            Debug.WriteLine(dr(0).ToString)
        Next
.. aber das geht leider nicht.

Hat jmd eine Idee? Danke!

Steve
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Enum mit Flags() Attribut in einer Select-Anweißung verwende...956WaldiMaywood30.06.04 18:58

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel