Seite 1 von 1

Report: wenn leer nicht drucken [erledigt]

Verfasst: 7. April 2021, 23:52
von Werner_Bayern
Servus,

leider finde ich nirgends eine Einstellung, um in einem Report Statics nicht zu drucken, wenn sie leer sind. Mit .visible gehts ja nicht - vor allem auch nicht per indirection. Ich hab 10 Statics von ...Text1 bis ...Text10 und würde das gern in einer Schleife behandeln:

Code: Alles auswählen

FOR i = 1 TO 10
	if blabla then
		{"STC_Artikel_Preis" + i}.visible = FALSE
	end
END
Aber das funktioniert nicht...

Wie geht sowas?

Re: Report: wenn leer nicht drucken

Verfasst: 8. April 2021, 07:29
von satmax
Wennst einfach einen Leerstring reinmachst:

STC_Artikel_Preis=""

wird nichts gedruckt.

Re: Report: wenn leer nicht drucken

Verfasst: 8. April 2021, 07:31
von Herbert
versuch's mit ..visible nicht .visible

Alternativ kannst im Control bei UI "Reset if zero" setzen, so wird bei keinem Wert nichts angezeigt.

Re: Report: wenn leer nicht drucken

Verfasst: 12. April 2021, 22:05
von Werner_Bayern
Hab mir selber ein Ei gelegt, in der Caption der Controls steht das drin:

Code: Alles auswählen

[%WIN_Rechnung.EDT_Artikel2%]
Jetzt ist das nie leer. Wie wertet man das zur Laufzeit aus? Das funktioniert nicht:

Code: Alles auswählen

IF {"STC_Artikel_Text" + i}..Empty THEN
IF {"STC_Artikel_Text" + i} = "" THEN
Reset if zero ist bei beiden Controlarten (Artikel_Text und Artikel_Preis) aktiviert, war mein 1. Gedanke.

Re: Report: wenn leer nicht drucken

Verfasst: 14. April 2021, 14:49
von Herbert
"Reset if zero" macht doch genau das während der Laufzeit...

Versuch's mal so:

Code: Alles auswählen

IF nospace({"STC_Artikel_Text"+numtostring(i,"1d"),indcontrol}) ="" THEN
das ",indcontrol" ist sinnvoll, damit der compiler mehr weiss und das Programm schneller arbeitet. Da sind übrigens noch andere sinnvolle Variablen bei der Indirection dabei.

Re: Report: wenn leer nicht drucken

Verfasst: 14. April 2021, 21:02
von Werner_Bayern
Servus Herbert,

nein, funktioniert auch nicht. Es wird vermutlich immer nur das Control ausgewertet, aber nicht der Ausdruck im Control selbst. In Xbase++ würde man schreiben:

Code: Alles auswählen

if empty(&(xAusdruck))

Re: Report: wenn leer nicht drucken

Verfasst: 15. April 2021, 06:25
von satmax
Sorry, ich verstehe es nicht, helft mir auf die Sprünge: wenn nichts drinnen steht kann ja nicht s gedruckt werden, wo ist da eigentlich das Problem?

Oder geht's dir um das Unterdrücken von Leerzeilen?

Re: Report: wenn leer nicht drucken

Verfasst: 15. April 2021, 07:41
von Herbert
Also, das reset if zero ist die Lösung.
In diesem Fall bleibt das Control unsichtbar.
Falls ein Control als leer gedruckt wird, bleibt ein eventueller Hintergrund davon bestehen.

Was ich vermute: Falls keine Links hinter den Items stehen, musst du bei jedem Durchlauf vorher den Inhalt auf leer setzen.

Re: Report: wenn leer nicht drucken

Verfasst: 15. April 2021, 15:39
von Werner_Bayern
satmax hat geschrieben:
15. April 2021, 06:25
Oder geht's dir um das Unterdrücken von Leerzeilen?
Korrekt! Jetzt sieht der Fenster so aus:
Win_Auftrag.PNG
Win_Auftrag.PNG (15.17 KiB) 2716 mal betrachtet
das wird in den Report übernommen:
Report.PNG
Report.PNG (5.66 KiB) 2716 mal betrachtet
und wird dann so gedruckt:
Ausdruck.PNG
Ausdruck.PNG (7.51 KiB) 2716 mal betrachtet

Re: Report: wenn leer nicht drucken

Verfasst: 15. April 2021, 15:41
von Werner_Bayern
Herbert hat geschrieben:
15. April 2021, 07:41
Was ich vermute: Falls keine Links hinter den Items stehen, musst du bei jedem Durchlauf vorher den Inhalt auf leer setzen.
Mache ich meiner Meinung nach:

Code: Alles auswählen

FOR i = 1 TO 10
	IF NOT {"WIN_Rechnung_Auftrag.EDT_Artikel" + i} = ""
		{"STC_Artikel_Preis" + i} = {"WIN_Rechnung_Auftrag.EDT_Preis" + i}
		{"STC_Artikel_Text" + i} = {"WIN_Rechnung_Auftrag.EDT_Artikel" + i}
	ELSE
		{"STC_Artikel_Preis" + i}..Visible = False
		{"STC_Artikel_Text" + i}..Visible = False
	END
END
Beim Opening RPT_Auftrag.

Re: Report: wenn leer nicht drucken

Verfasst: 15. April 2021, 16:22
von satmax
IMHO ist das ein Klassiker für eine Table. Egal ob die die Table mit einem SQL Query oder via Funktion befüllst, aber so würde ich das nicht machen. Mit einer Table geht dann alles von selbst, egal ob eine oder 100 Rechnungspositionen....
Werner_Bayern hat geschrieben:
15. April 2021, 15:39
satmax hat geschrieben:
15. April 2021, 06:25
Oder geht's dir um das Unterdrücken von Leerzeilen?
Korrekt! Jetzt sieht der Fenster so aus:

Win_Auftrag.PNG

das wird in den Report übernommen:
Report.PNG

und wird dann so gedruckt:
Ausdruck.PNG

Re: Report: wenn leer nicht drucken

Verfasst: 27. April 2021, 13:46
von Werner_Bayern
Ich Depp,

die leeren Zeilen wurden tatsächlich nicht gedruckt, bloß habe ich das nicht bemerkt, weil ich davon ausging, dass dann der untere Teil mit Netto, UST und Gesamtsumme nach oben rutscht. Das tut es aber nicht - und es gibt da wohl auch keine Option dazu.

Herbert hat mir telefonisch geholfen, ich hatte schon den Tipp von satmax teilweise umgesetzt und eine Table gemacht, wollte die aber mit tableAddLine() füttern. Lt. Herbert macht das mehr Probleme, als es bringt. Er hat mir eine Array-Structur empfohlen, die dann die Datenquelle ist.

So funktioniert es jetzt! Danke an alle nochmal!