0

Sammeln von Eigenschaften mittels Skript aus verschiedenen Tabellen

Hallo liebe Ninox-Community,

(Sorry für den Titel, aber mir ist nicht eingefallen wie ich das Problem, akkurat in wenigen Worten beschreibe)

ich versuche gerade eine Tabellenspalte mit Informationen zu füttern, die in einer anderen Tabelle gespeichert sind. Kurz zum Aufbau:

Ich habe die Tabelle Mitarbeiter.Teilprojekte, in der nur Teilprojekte und Mitarbeiter drinnen hab. Dabei können sowohl die Teilprojekte als auch die Mitarbeiter mehrmals vorkommen (Angenommen die Projekte seien Zahlen und die Mitarbeiter Buchstaben hat die Tabelle also sehr viele Zeilen der Form (wobei das in eckigen Klammern einzelne Zeilen sein sollen) [A,1],[A,2],[A,3],[B,2],[B,3]....)

Nun habe ich eine andere Tabelle Büro (wo alle Mitarbeiter drin sind) mit der Ansicht QM. Dort würde ich jetzt gerne eine Spalte hinzufügen, in der alle Teilprojekte, denen ein Mitarbeiter in der Tabelle Mitarbeiter.Teilprojekte zugeordnet ist, angezeigt werden (Also soll Mitarbeiter 1 in der Spalte A haben, Mitarbeiter 2 und 3 sollen A und B drinnen stehen haben.

Ich habe versucht das über ein Skript zu machen, aber ich komme noch nicht ganz mit der Ninox Syntax zurecht. 

let newT := openTable('Büro', QM)
for i in select 'Mitarbeit.Teilprojekte' do
    let myName := i.Name;
    let myProj := i.Teilprojekt
    if newT.Name = myName then newT.Teilprojekte := concat(myProj, newT.Teilprojekte)
end

 

Idee wäre, dass man mit der Funktion durch die Tabelle Mitarbeiter.Projekte iteriert und dann alle Einträge zu einem Mitarbeiter an die zugehörige Variable anzuhängen mit "concat(myProj, newT.Teilprojekte)" (falls das so geht in Ninox.

Allerdings kriege ich hier den Fehler, dass "Eine Tabellenspalte wurde nicht gefunden: Büro in Zeile 1, Spalte 28". Wieso findet er Ansicht der Tabelle nicht? Und würde der Rest des Skripts so funktionieren oder muss ich das auch noch ändern? Da die Spalte ja auch in der Tabelle Büro sein soll habe ich es auch mit

openTable(this, QM) ausprobiert, aber auch kein Erfolg ("die Funktion ist nicht definiert: openTable(nid,date)")

Danke für eure Hilfe!

LG

Ziyad

3 Antworten

null
    • Ziyad_Nuwayhid
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Mittlerweile hab ich das Skript soweit gekriegt, dass es keine Fehler ausspuckt,

    for i in select 'Mitarbeit.Teilprojekte' do
        let newT := create 'Büro';
        let myName := i.Name;
        let myProj := i.Teilprojekt;
        newT.Teilprojekte := if newT.Name = myName then concat(myProj, newT.Teilprojekte)
    end
    end
    

    aber stattdessen sagt mir Ninox, dass die Funktion keine Daten verändern darf (wahrscheinlich liegt das an der Stelle newT.Teilprojekte := concat(myProj, newT.Teilprojekte, bin mir aber nicht sicher).

    Falls jemand weiß wie ich das umgehen kann wäre ich sehr verbunden :)

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Ziyad Nuwayhid. Ich habe mal ein paar Vorschläge für Dich.

    In einem Funktionsfeld lassen sich keine Daten verändern, so ein Script gehört in einen Button. Hier versuchst Du über create 'Büro' neue Datensätze in der Tabelle 'Büro' anzulegen. Das geht nicht. Dann verwirrt es, daß eine Tabelle bei Dir 'Mitarbeiter.Teilprojekte' heißt. Diese Namenswahl ist nicht ganz glücklich, da die Punktnotation für die verknüpften Tabellen reserviert ist. Durch die Anführungszeichen, kannst Du das dann zwar umgehen, aber der Code bleibt schwerer lesbar. Oder ist es eine verknüpfte Tabelle? 

    Wenn ich alles richtig verstanden habe, dann ist die Anzeige im Funktionsfeld mit folgendem Script  in der Tabelle 'Büro' durchführbar. Vielleicht mußt Du noch die Namen korrigieren. Jetzt hat jeder Mitarbeiter ein neues Feld, welches Du in der Ansicht "QM" nur noch aktivierne mußt. Folgende Vorannahmen:

    Tabelle 1: 'Mitarbeiter.Teilprojekte', Feld1:Name,  Feld2:Teilprojekt  

    Tabelle 2: 'Büro", Feld1: Name

    let employee := Name;
    (select 'Mitarbeiter.Teilprojekte')[Name = employee].Teilprojekt
    

    Gruß Mirko

      • Ziyad_Nuwayhid
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko Vielen Dank für deine Hilfe, ich werde versuchen das umzusetzen und melde mich dann nochmal. Dann werde ich das ganze nochmal mit einem Button versuchen :)

      Ein paar Sachen sind ungünstig formuliert, die Mitarbeiter.Teilprojekte sollte eine Kindtabelle sein, allerdings bin ich noch zu neu bei Ninox mir fallen da noch ein paar sachen auf die Füße.

       

      LG

Content aside

  • vor 1 JahrZuletzt aktiv
  • 3Antworten
  • 73Ansichten
  • 1 Folge bereits