0

Einträge in Untertabellen mit "ID" definieren

Hallo zusammen! :)  

Ausgangssituation: 

Ich befinde mich in Tabelle "Arbeitseinsätze", diese ist mit Tabelle "Kunden" verknüpft. Im Kunden befindet sich die Untertabelle "Ansprechpartner". Das einfachste wäre jetzt theoretisch die komplette Untertabelle Ansprechpartner aus Kunden abzubilden, leider meines Wissen nach nicht möglich. 

(Drucklayout liegt in "Arbeitseinsätze")

Dementsprechend die folgende Idee:

"Ansprechpartner" besteht aus den folgenden Feldern: Vorname; Nachname (Textfelder); Zuständigkeit (Mehrfachauswahl); Anrede (Auswahlfeld). Sofern sinnvoll könnte man jeden Ansprechpartner mit einer ID versehen z.B. §1; §2; §3 usw. 

In Arbeitseinsätze könnte man nun von der Untertabelle Ansprechpartner abweichen und eine Funktion definieren, welche die einzelnen ID´s erkennt. Anschließend könnte ich es mit Formelfeldern wie folgt darstellen: 

Anrede von §1, Vorname von §1, Nachnahme von §1, Zuständigkeit von §1 (Könnten auch mehrere sein)

Anrede von §2, Vorname von §2, Nachnahme von §2, Zuständigkeit von §2 (Könnten auch mehrere sein)

usw. 

(Die Anzahl der Ansprechpartner pro Kunden kann abweichend sein)

Frage: 

Macht dieser Ansatz überhaupt Sinn, gibt es vielleicht einen wesentlich simpleren Weg und falls nein, wie würdet Ihr die Formel aufbauen bzw. die Sache grundsätzlich angehen?

 

PS: Man könnte evtl. auch "Ansprechpartner" direkt mit "Arbeitseinsätze" verknüpfen und sagen "Zeige mir nur die "Ansprechpartner" an, welche zu der sowieso schon verknüpften "Kunden" Tabelle passen.

4 Antworten

null
    • Felix.5
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Ich würde mein Anliegen gerne noch einmal vereinfacht vor Augen rufen, vielleicht hat dann jemand eine Idee. Details findet Ihr oben. :)

    Ich befinde mich in "Arbeitseinsätze" und habe einfach mal folgende Ansicht erstellt: (Kunden.Ansprechpartner)

    Genau diese Untertabelle hätte ich theoretisch gerne im Drucklayout, ist ohne Umweg nur leider nicht möglich. Wären es max. 2 Ansprechpartner*innen wäre es relativ einfach mit first und last zu regeln, es sind nur leider beliebig viele. Die konkrete Frage, wie kriege ich alle "Ansprechpartner" (Untertabelle von Kunden) in den entsprechenden Arbeitseinsatz? (Verknüpfung zwischen Kunden und Arbeitseinsätze gegeben)

    • Head of Product Design
    • toby
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Hallo Felix, 

    ich habe mal versucht das nachzustellen. 
    Durch ein Formelfeld lässt sich das lösen in dem die Untertabelle ausgelesen und dann dargestellt wird.

    #{
        Mit diesem Skript können Daten aus der Untertabelle einer verknüpften Tabelle ausgelesen, dargestellt und auch im Drucklayout genutzt werden.
    }#;
    #{ Referenz auf die Untertabelle }#;
    let listeDerAnsprechpartner := Kunden.Ansprechpartner;
    #{
        Eine leere String Variable in der wir die Daten sammeln und formatieren werden
    }#;
    let textZurAnzeige := "Vor Ort dienen folgende Personen als Ansprechpartner:  ";
    #{
        Wir gehen jeden Record der Untertabelle durch
    }#;
    for partner in listeDerAnsprechpartner do
        #{ Nur Ansprechpartner anzeigen, die als aktiv markiert sind }#;
        if text(partner.Status) = "Aktiv" then
            #{ Zeilenumbrüche im Text sind auch im Scripteditor einfach Zeilenumbrüche. Wenn wir die jedoch ans Ende setzen, wendet Ninox eine automatische Kommasetzung zur Trennung von Daten an. Daher müssen wir diese am Anfang setzen. aber natürlich nicht für den ersten Record. Daher fragen wir das hier ab un setzen für den ersten Record einen leeren String und für die anderen einen Zeilenumbruch  }#;
            if partner = first(Kunden.Ansprechpartner) then
                #{ Wir überschreiben die Variable nicht, sondern fügen nur hinzu, in dem Fall, dass es noch andere Werte oder einleitende Texte geben sollte. (In dem Fall würde sich aber diese Abfrage hinsichtlich des Zeilenumbruchs ggf. erledigen.) }#;
                textZurAnzeige := textZurAnzeige + ""
            else
                textZurAnzeige := textZurAnzeige +
                    "
    "
            end;
            #{ Jetzt fügen wir alle Werte aus der Untertabelle hinzu, die wir darstellen wollen, jeweils getrennt durch ein Leerzeichen }#;
            textZurAnzeige := textZurAnzeige + partner.Anrede + " " + partner.Vorname + " " + partner.Nachname
        end
    end;
    #{ abschliessen nun die Darstellung der Daten }#;
    textZurAnzeige
      • Rafael_Sanchis
      • vor 3 Monaten
      • Gemeldet - anzeigen

       

      Simple modify example 

    • Felix.5
    • vor 3 Monaten
    • Gemeldet - anzeigen

     Guten Morgen Toby, diese Herangehensweise hatte ich bis hier nicht auf dem Schirm, es ist immer wieder schön zu sehen, dass letztlich nichts unmöglich ist. Vielen Herzlichen Dank für den neuen Anstoß und die perfekte Lösung! :)

Content aside

  • Status Answered
  • vor 3 MonatenZuletzt aktiv
  • 4Antworten
  • 58Ansichten
  • 3 Folge bereits