0

Datentabellen aus verschiedenen Standorten zusammenführen

Hallo,

kann mir jemand helfen, wie ich den Datenbestand aus verschiedenen Standorten in einer Gesamttabelle zusammenführen kann.

Ich möchte über 5 Firmen-Standorte hinweg mein IT-Inventar von den jeweilingen Standortverantwortlichen erfassen lassen. Dabei sollen die Standortverantwortlichen allerdings nur ihre jeweiligen Inventar-Objekte lesen und ändern dürfen, nicht jedoch die Inventar-Objekte der übrigen Standorte.

Zunächst habe ich je Standort eine Tabelle mit identischer Struktur angelegt und über separate Rollen den Standortverantwortlichen Zugriff nur auf ihre Tabellen gegeben. Das funktioniert soweit. 

Nun möchte ich die 5 Tabellen zusammenführen, um einen Überblick über das gesamte IT-Inventar zu erhalten. 

Wie wäre das lösbar?

Alternativ frage ich mich, ob es Möglichkeiten gibt, das IT-Inventar von vorne herein in einer gesamten Tabelle zu führen und den Standortverantwortlichen rollenbezogen nur Sicht auf Ihre Objekte zu geben. Habe mit "Lesbar wenn" schon verschiedenes versucht, leider ohne Erfolg.

Besten Dank für Anregungen.

 

Verschiedene Standorte führen Ihr IT-Inventar (PCs mit technischen Angaben als Attribut) in separaten Tabellen. 

Standortübergreifend benötige ich eine Gesamt-Tabelle, in der jedoch nur die Standorte ihre jeweiligen O

9 Antworten

null
    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo,

    du kannst die Daten der einzelnen Standorte als CSV exportieren und dann in die gemeinsame Tabelle importieren...

    In der Gesamttabelle solltest du ein Feld "Standort" führen. Zusätzlich legst du eine Tabelle Benutzer an mit dem User und einem Standortfeld. Anschließend kannst du die Sicht auf die Gesamttabelle über "Lesbar wenn" einschränken. Der Code hierin könnte etwa so aussehen:

    let myUser := first(select Benutzer where User = user());
    if myUser.Standort = null then
      true
    else
      Standort = myUser.Standort
    end

    Die Benutzer-Tabelle muss in dem Fall ein Feld User haben, in dem der jeweilige Benutzer zugewiesen ist. Soll der Benutzer nur das Inventar eines Standortes sehen, dann gibst du diesen Standort in dem Feld "Standort" ein - ansonsten lässt du das frei (z. B. für dich).

    VG Frank

    • Norbert_Reekers
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Frank,

     

    vielen Dank für Deine prompte Reaktion. Habe das gleich mal versucht und Tabelle Benutzer sowie den Code in Gesamttabelle unter "Lesbar wenn" eingebaut. Leider funktioniert die Zuweisung in Zeile 1 zu myUser m. E. nicht: Wenn ich nach der ersten Zeile mit alert den Wert myUser.User ausgeben lasse, kommt "undefined", ebenso bei Ausgabe alert (my.User.Standort).

    Hast Du eine Idee, woran das liegen kann? 

    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Kannst du mal einen Screenshot von der Tabellendefinition deiner Benutzer-Tabelle posten?

    VG Frank

    • Norbert_Reekers
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Bildschirmfoto 2019-02-17 um 21.36.10

    • Norbert_Reekers
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Bildschirmfoto 2019-02-17 um 21.39.49

    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Okay - das Feld User muss für das Code-Beispiel vom Typ Benutzer sein.

    VG Frank

    • Norbert_Reekers
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ganz herzlichen Dank, funktioniert super!

    Noch eine Frage: Ein User sieht nun nur die für seinem Standort zugeordneten Datensätze und kann diese auch ändern, was soweit OK ist. Wie kann ein Standort neue Einträge vornehmen? Das Hinzufügen scheint nicht zu funktionieren. 

    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo,

    das Hinzufügen funktioniert schon - aber wenn das Feld Standort im neuen Datensatz dann leer ist, sieht der Benutzer den nicht. Also muss das Feld im Trigger "Bei neuem Datensatz folgendes Skript ausführen" diesen automatisch eintragen:

    let myInventar := this;
    let myUser := first(select Benutzer where User = user());
    if myUser.Standort != null and myUser.Standort != "" then
     
    myInventar.Standort := myUser.Standort
    end

    Dadurch ist der Datensatz direkt im Bereich dessen, was der Benutzer sehen kann und dieser kann somit neue Einträge anlegen und bearbeiten.

    VG Frank

    • Norbert_Reekers
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Frank,

    besten Dank für die unkomplizierte Unterstützung. Funktioniert nun genau so wie es soll.