0

Werte aus einer Untertabelle lesen und in ein formatiertes Textfeld schreiben

Hallo,
hat dazu jemand eine Lösung / Idee / Hinweis ?

Wir haben X Kunden die jeweils Y Geräte besitzen.
Diese Geräte haben wir in eine Untertabelle der Kundendatenbank gelistet und bewertet.

Wir möchten nun alle diese Y Werte (Hersteller, Model, Alter etc.) aus der Untertabelle in ein formatiertes Textfeld des Kunden X kopieren um diese leichter in anderen Programmen (email, Word etc.) verwenden zu können.

Mein Ansatz war da vielleicht ein Array?
Dazu fehlt mir aber die Erfahrung.

Für Tips bin ich dankbar.

7 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Tomi,

    ich fülle die Werte aus Untertabelle als HTML Tabelle in ein formatiertes Feld und versende diese Tabelle dann per Email.

    Die Formel für 2 spaltige Tabelle wäre:

    ---

    'Text (formatiert)' := html("<div style='overflow:scroll;height:100%;wight:100%'>" + "<table style= 'width:100%;'border=1'>" + "<thead >" + "<tr>" + "<td>" + "<b>ÜBERSCHRIFT1</b>" + "</td>" + "<td>" + "<b>ÜBERSCHRIFT2</b>" + "</td>" + "</tr>" + join(UNTERTABELLE.("<tr>" + "<td>" + FELD1 + "</td>" + "<td>" + FELD2 + "</td>" + "</tr>"), "
    ") + "</table></div>")

    ---

    Großgeschriebene Werte muss du durch deine ersetzen. 

    Leo

    • Tomi.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Leo, wow, coole Idee da eine html Tabelle draus zu machen.

    Das ist sicher für das Füllen des Textfeldes die perfekte Lösung.
    Hut ab dafür!

    Mein Problem ist aber eines was früher auftritt.

    Ich habe bei jeden Kunden unterschiedliche viele Geräte oder, anderes Beispiel, unterschiedlich viele Ansprechpartner
    In der einen Firma gibt es 3 Ansprechpartner in der anderen 15

    Ich möchte nun alle Kontakte (oder Geräte) die mit dem Kunden verknüpft sind in ein formatiertes Textfeld kopieren. 

    Das Ergebnis soll so aussehen:

    Anrede1 + Vorname1 + Name1
    Anrede2 + Vorname2 + Name2
    Anrede3 + Vorname3 + Name3
    ....

    oder eben mit den Geräten:

    Hersteller1 + Modell1 + Baujahr1
    Hersteller1 + Modell1 + Baujahr1
    Hersteller1 + Modell1 + Baujahr1

    Ich dachte das so:

    1.) Auslesen wie viele Datensätze überhaupt in der Untertabelle verknüpft sind:
    >> let mySys := this;
    >> let myAnzahl := cnt(select Ansprechpartner where Kunden = mySys);

    2.) Ersten Record in der Untertabelle suchen der verknüpft ist:
    >> let myRec := ((select Ansprechpartner where Kunden = mySys) order by Nr);

    3.) Den Wert auslesen und die Nr der Eintrages merken:
    >> let myKontakt := first(myRec.Anrede) + " " + first(myRec.Vorname) + " " + first(myRec.Name);
    >> let myID := first(myRec.this.Nr);

    4.) Dann eine Schleife die so oft durchlaufen wird wie die Anzahl verknüpften Einträge -1 in der Untertabelle ist und dabei immer wieder die Variable zum füllen des formatierten Textfeldes erweitern.

    >> for .....
    >>>> let myRec := (select Ansprechpartner where Kunden = mySys and number(Nr) > number(myID));
    >>>> let myKontakt := first(myRec.Anrede) + " " + first(myRec.Vorname) + " " + first(myRec.Name) + "<br>";
    >>>> let myTextfeld := Textfeld
    >>>> Textfeld := myKontakt + myTextfeld
    >> end

    1.) bis 3.) bekomme ich hin (steht ja schon da)

    bei 4.) scheitere ich immer wieder an der Syntax der Schleife

    Ich wäre mit der Lösung zur Schleife schon zufrieden.

    Deinen Vorschlag mit der Tabelle baue ich dann später um/ein.

    • Tomi.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Findet jemand den Fehler weil ich finde ihn nicht:

    Warum wird der zweite Record zweimal ausgelesen statt den Record 3 zu finden?

    'VAR-Liste-APartner' := null;
    let mySys := this;
    let myAnzahl := cnt(select Ansprechpartner where Kunden = mySys);
    let myRec := ((select Ansprechpartner where Kunden = mySys) order by Nr);
    let myKontakt := first(myRec.Anrede) + " " + first(myRec.Vorname) + " " + first(myRec.Name);
    let myID := first(myRec.this.Nr);
    'VAR-Liste-APartner' := myKontakt;

    for myAnzahl from 1 to myAnzahl do
      let myRec := ((select Ansprechpartner where Kunden = mySys and number(Nr) > number(myID)) order by Nr);
      let myKontakt := first(myRec.Anrede) + " " + first(myRec.Vorname) + " " + first(myRec.Name) + "<br>";
      let myID := first(myRec.this.Nr);
      let myAnzahl := myAnzahl + 1;
      let myText := raw('VAR-Liste-APartner');
      'VAR-Liste-APartner' := myKontakt + myText
    end

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Viel zu kompliziert. Wenn die Untertabelle im Kundenformular auch Ansprechpartner heißt, kannst du diese ohne select ansprechen. Die Former für ein berechnetes Feld:

    join(Ansprechpartner.(Anrede+" "+Vorname+" "+Name),"

    ")

    Leo

    • Tomi.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    ok, ich habe es:

    'VAR-Liste-APartner' := null;
    let mySys := this;
    let myAnzahl := cnt(select Ansprechpartner where Kunden = mySys);
    let myRec := ((select Ansprechpartner where Kunden = mySys) order by Nr);
    let myID := number(first(myRec.this.Nr));
    let myKontakt := first(myRec.Anrede) + " " + first(myRec.Vorname) + " " + first(myRec.Name);
    let myText := " ";
    'VAR-Liste-APartner' := myKontakt + "<br>";
    for myAnzahl from 1 to myAnzahl do
    let myRec := ((select Ansprechpartner where Kunden = mySys and number(Nr) > number(myID)) order by Nr);
    myID := number(first(myRec.this.Nr));
    let myKontakt := first(myRec.Anrede) + " " + first(myRec.Vorname) + " " + first(myRec.Name) + "<br>";
    myText := raw('VAR-Liste-APartner');
    'VAR-Liste-APartner' := myKontakt + myText
    end

    • Tomi.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Danke Leo,

    ich habe jetzt auch deinen Eintrag im Forum dazu gefunden:

    https://ninoxdb.de/de/forum/technische-hilfe-5ab8fe445fe2b42b7dd39ee8/join-als-bessere-concat-5ab8fe445fe2b42b7dd39f12

    Leider steht im Handbuch NIX dadrüber.

    Wäre aber schön gewesen wenn man was hätte finden können, dann hätte ich nicht stundenlang an einem "Workaround" für einen vorhanden Befehl suchen müssen.

    Aber vielleicht habe ich falsch gesucht.

    • Tomi.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Danke Leo,

    ich habe jetzt auch deinen Eintrag im Forum dazu gefunden:

    https://ninoxdb.de/de/forum/technische-hilfe-5ab8fe445fe2b42b7dd39ee8/join-als-bessere-concat-5ab8fe445fe2b42b7dd39f12

    Leider steht im Handbuch NIX dadrüber.

    Wäre aber schön gewesen wenn man was hätte finden können, dann hätte ich nicht stundenlang an einem "Workaround" für einen vorhanden Befehl suchen müssen.

    Aber vielleicht habe ich falsch gesucht.

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 7Antworten
  • 3097Ansichten