Rpad mit text
Ist es möglich rpad mit Text zu füllen? Statisch geht das, ich brauch es als variable.
let myPos := this;
let pla := cnt(select Einzelpositionen where number(Rechnungsstellung) = myPos);
let text := if Kunde.Firma and Kunde.'Nachname oder Zusatz für Empfänger in PDF' then
Kunde.Firma + "
" + Kunde.'Nachname oder Zusatz für Empfänger in PDF' + "
" + Kunde.'Straße Nr' + "
" + Kunde.PLZ + " " + Kunde.Ort
else
if Kunde.Firma and Kunde.'Nachname oder Zusatz für Empfänger in PDF' = null then
Kunde.Firma + "
" + Kunde.'Straße Nr' + "
" + Kunde.PLZ + " " + Kunde.Ort
else
if Kunde.Anrede = 1 or Kunde.Anrede = 2 then
Kunde.Anrede + "
" + Kunde.Vorname + " " + Kunde.'Nachname oder Zusatz für Empfänger in PDF' + "
" + Kunde.'Straße Nr' + "
" + Kunde.PLZ + " " + Kunde.Ort
end
end
end;
let zeilen := 50 - pla;
if pla > 6 then
rpad(text, zeilen, "
")
end
17 Antworten
-
Hi Michi ,
so sollte es funktionieren:
rpad("xxx", 20, text(FELD))
zur Sicherheit die Variable als text() auslesen.
Viel Erfolg
Ronald
-
Funktioniert leider nicht. Sobald ich versuche einen text als variable einzufügen funktioniert das mit den leerzeilen nicht mehr.
wenn ich es direkt eingebe funktioniert es, aber es ist nicht brauchbar.
Hat noch einer ne idee, oder geht es gar nicht?
So funktioniert das mit den leerzeilen nicht:
let myPos := this;
let zeilen := cnt(select Einzelpositionen where number(Rechnungsstellung) = myPos);
let platz := 50 - zeilen;
let textbaustein := text('Einfügen');
if zeilen > 6 then
rpad(textbaustein, platz, "
")
endSo funktioniert alles, ist jedoch nicht brauchbar:
let myPos := this;
let zeilen := cnt(select Einzelpositionen where number(Rechnungsstellung) = myPos);
let platz := 50 - zeilen;
if zeilen > 6 then
rpad("einzufügender text", platz, "
")
end -
Hi Michi. Vielleicht so.
let myPos := this; let textbaustein := text('Einfügen'); let line := 50 - cnt(select Einzelpositionen where number(Rechnungsstellung) = myPos); let lineBreak := " "; let totalLineBreak := if line > 6 then for i in range(0, line) do lineBreak end end; textbaustein + totalLineBreak
-
Moin Michi ,
Michi said:
Zum eigentlichen, ist ein fx im Druck Layout, es soll nur den seitenumbruch besser gestalten. Daher wollt ich gerne die if Abfrage als Text einbinden. Also erst der Text, dann die Leerzeilen welche sich immer ändern je nach Befüllung der Ansicht darin.Wenn es nur um das Layout im Druckeditor geht und darum, dass das FX-Feld immer gleich groß sein soll?! Dann reicht es vielleicht die Box des FX-Feldes so groß zu machen, dass 50 Zeilen rein passen. Die Box wird dann variabel gefüllt und der Rest bleibt leer.
Viele Grüße
Ronald -
Danke Ihr beiden.
Mirko seine Variante macht genau das was es soll.
DIGITOOL das fx soll ja nur befüllt werden wenn eine bestimmte anzahl von einträgen enthalten ist. So kann ich dynamisch die 2. seite besser gestalten, ohne das da drinnen "rumgefummelt" werden muss.
-
Habt Ihr eventuell noch eine idee wie ich die geschriebenen Zeilen in einem textfeld zählen kann? ist ein anderes layout nur hab ich hier noch die abhänigkeit zu dem Textfeld (wieviele Zeilen unabhängig vom Inhalt existieren)
-
schau mal so (hab auch noch einen Fehler von mir korrigiert)
let myPos := this; let textbaustein := text('Einfügen'); let cntPos:=cnt(select Einzelpositionen where number(Rechnungsstellung) = myPos) let line := 50 - cntPos; let lineBreak := " "; let totalLineBreak := if cntPos > 6 then for i in range(0, line) do lineBreak end end; let result:=textbaustein + totalLineBreak length(replacex(result, "\n", "*")) - length(textbaustein)
-
versuche mal so:
zum Bestimmen der Zeilenanzahl ohne Leerzeilen:
let a := replacex(Rechnungshinweise, ".(?=\n)", "*"); let b := length(replacex(a, "[^*]", "")); b
für Zeilenanzahl mit Leerzeilen:
let a := replacex(Text, "\n", "*"); let b := length(replacex(a, "[^*]", "")); b + 1
-
Hi Michi. Ich habe noch mal (nach Feierabend ;-)) nachgedacht. Es ist besser die Zeilenenden ($) zu zählen und nicht die Zeilenumbrüche (\n). Mal sehen ob es jetzt bei Dir klappt. Die erste Zeile ersetzt alle Zeilenenden durch "*". Die zweite Zeile tilgt alle Zeichen außer "*" und zählt dann die Sternchen.
let a := replacex(Rechnungshinweise, ".(?=$)", "gm", "*"); let b := length(replacex(a, "[^*]", "")); b
Content aside
- vor 2 JahrenZuletzt aktiv
- 17Antworten
- 93Ansichten
-
2
Folge bereits