0

Filter auf Ansicht nicht global sondern pro User?

Hallo Freunde der gepflegten Datenbank,

ich habe für meine Kollegen und mich eine Ansicht gebaut in der man mehrere Filter benutzen kann um relevanten Informationen schnell zur Hand zu haben. Dabei bin ich auf ein paar Herausforderungen gestoßen (Die wichtigste steht in der überschrift.), bei denen ich hoffe, dass mir hier jemand bei der Lösung behilflich sein kann. :)

Da es sich um eine interne DB handelt, habe ich ich etwas ähnliches mit der Ninox-Beispieldatenbank "Warenwirtschaft" nachgebaut. Für Interessierte habe ich die DB hier als Export abgelegt: https://drive.google.com/drive/folders/1iyvRBkmN_i83s46DVJMw19yRcOS-bLZt 

Nun zur Funktion: Die Filter bestehen aus 2 Datumsfeldern, die den Zeitraum begrenzen, einer verknüpften Tabelle (2_Kunden) mit der man einen Kunden wählen kann und einer Auswahl für den Typ (Angebot/Rechnung/Lieferschein).

Forum Filter

Diese Angaben werden dann mehr oder weniger geschickt in einem Select verarbeitet, das die Ansicht erstellt und so aussieht:

if 'Ja / Nein' = 0 then
select '1_Kundenbestellungen'
else
var mybegin := Datum;
if mybegin = null then
mybegin := date(2000, 1, 1)
end;
var myfinish := 'Datum 2';
if myfinish = null then
myfinish := date(2099, 12, 31)
end;
let mycustomer := '2_Kunden';
var mycustomerexists := 0;
if '2_Kunden' > 0 then
mycustomerexists := 1
else
mycustomerexists := 0
end;
var mytypeexists := 0;
let mytype := Auswahl;
if Auswahl > 0 then mytypeexists := 1 else mytypeexists := 0 end;
if mycustomerexists = 1 and mytypeexists = 1 then
(select '1_Kundenbestellungen')['Datum der Rechnungsstellung' >= mybegin and 'Datum der Rechnungsstellung' <= myfinish and Kunde.Nr = mycustomer and Typ = mytype]
else
if mycustomerexists = 1 and mytypeexists = 0 then
(select '1_Kundenbestellungen')['Datum der Rechnungsstellung' >= mybegin and 'Datum der Rechnungsstellung' <= myfinish and Kunde.Nr = mycustomer]
else
if mycustomerexists = 0 and mytypeexists = 1 then
(select '1_Kundenbestellungen')['Datum der Rechnungsstellung' >= mybegin and 'Datum der Rechnungsstellung' <= myfinish and Typ = mytype]
else
(select '1_Kundenbestellungen')['Datum der Rechnungsstellung' >= mybegin and 'Datum der Rechnungsstellung' <= myfinish]
end
end
end
end

Jetzt zu meinen Problemen.
Sobald jemand diese Filter verwendet werden sie für alle User angewendet, was ich nicht möchte, denn die Logistik will zum Beispiel Lieferscheine, der Vertrieb nur Angebote und die Buchhaltung nur die Rechnungen sehen und alle schalten sich die Filter wild hin und her. Gibt es hier eine Möglichkeit das anders zu gestalten, damit jeder Benutzer nur seinen eigenen Filter sieht?
Da es anscheinend nicht möglich ist (Berichtigt mich wenn ich falsch liege.) eine Auswahl aus einer Tabellenspalte zu generieren habe ich einfach die ganze Kundentabelle verknüpft um an die Kunden zu kommen. Funktioniert so weit auch prima. Unschön hierbei ist, dass das +-Symbol zum Anlegen neuer Kunden zu sehen ist, da je nach Berechtigung entweder Anwender mit Fehlermeldungen belästigt oder leere Kunden angelegt werden. Kann man das Hinzufügen von Kunden über diese verknüpfte Tabelle unterbinden?

Eventuelle Optimierungen der Ansicht nehme ich natürlich auch gerne an.

Danke schon mal für eure Hilfe.

Gruß
Gregor

2 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Gregor,

    Wenn du in der Tabelle "Tabelle" noch ein Feld -Type Benutzer hinzufügst, dann meherere Datensätze anlegst und in jedem Datensatz einen anderen Benutzer anlegst. Dann auf Tabelleneben bei lesbar wenn :

    Benutzer=user()

    ---

    schreibst, dann landet jeder Benutzer in seinem eigenm Dashboar und kann unabhängig von anderen filtern.

    Leo

    • QSC AG
    • Gregor.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

     

    hat gelappt. Vielen Dank dafür.

     

    Gruß

    Gregor

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 2Antworten
  • 797Ansichten