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
-
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
-
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 15Ich 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 + Baujahr1Ich 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
>> end1.) 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. -
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 -
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
-
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 -
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.
-
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