Ausblenden von Elementen wenn dbMemo Feld leer

Alles, was den Reportdesigner und Drucken betrifft. Fehlermeldungen, Fragen, Reports

Moderatoren: Raffenberg, A. Schüller, Pfotenhauer

Antworten
bra
Beiträge: 37
Registriert: Mittwoch 21. Dezember 2022, 15:43
Schulform: HS

Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von bra »

Hi zusammen,

ich habe einen Subreport der aus einem Label und einem dbMemo Feld (DataPipeline: SchuelerlaufbahnBem / Datafield: LES) besteht.
Jetzt möchte ich das Label (oder den ganzen Subreport) nicht mitdrucken wenn in dem Memofeld keine Daten vorhanden sind.

Wo und wie kann ich das Memofeld auf Inhalt abfragen? Das "Ausschalten" des Labels kann ich dann ja über visible erledigen.

BTW: gibt es irgendwo eine Übersicht über die Methoden / Funktionen des Reportgenerators?

Gruß und schon mal Danke
Matthias

------------------------------------------------------------------------------------------------------------------------

Ausprobiert habe ich:
l_AuE.Visible := Not IstLeer(SchuelerlaufbahnBem;'LELS');

und

l_AuE.Visible:=true;
If IstLeer(SchuelerLaufbahnBem;'LELS') then l_AuE.visible:=false;

Die Fehlermeldung ist:
Fehler: dbm_Bem_LELSOnGetMemo, Zeile 5: Erwartet 'or' oder 'xor,' stattdessen wurde ';' gefunden.
Zuletzt geändert von bra am Donnerstag 22. Dezember 2022, 08:55, insgesamt 1-mal geändert.
- SchildZentral
A. Schüller
Beiträge: 971
Registriert: Mittwoch 10. Februar 2021, 21:30
Schulform: Gymnasium

Re: Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von A. Schüller »

Hallo,

ich schaue oft hier: https://wiki.svws.nrw.de/mediawiki/inde ... Funktionen
oder direkt im Bearbeitungsmodus vom Report:
Dateianhänge
2022-12-22_083051.png
2022-12-22_083051.png (64.6 KiB) 682 mal betrachtet
Mit freundlichen Grüßen
Anne Schüller
bra
Beiträge: 37
Registriert: Mittwoch 21. Dezember 2022, 15:43
Schulform: HS

Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von bra »

So, wenn man die Brille richtig aufsetzt, kommt man auch zur Lösung.
Im Funktionsaufruf sollte man kein Semikolon setzen!

@Anne: Danke für den Tipp

Gruß Matthias
- SchildZentral
bra
Beiträge: 37
Registriert: Mittwoch 21. Dezember 2022, 15:43
Schulform: HS

Re: Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von bra »

Anscheinend war die Lösung doch noch nicht so einfach. Manchmal verschwinden die - wirklich - leeren Einträge manchmal nicht.

Ich habe die Abfrage in "OnGetMemo" gebaut.
....

Code: Alles auswählen

begin
   l_LELS.visible := not IstLeer(SchuelerLaufbahnBem,'LELS');
end; 
Eigentlich sollte das Label "l_LELS" dann doch immerbverschwinden wenn das Memo leer ist oder?

Gruß und ein frohes neues Jahr
Matthias
- SchildZentral
D.Jakel
Beiträge: 1021
Registriert: Sonntag 2. Dezember 2018, 18:13
Schulform: Gymnasium

Re: Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von D.Jakel »

Guten Tag, vielleicht liegt es daran, dass es verschiedene "leer" gibt, nämlich "unbenutzt" und "geleert". Das Problem trat auch bei der Masernimpfung auf:
mfG, D.Jakel
Christoph Sprung
Beiträge: 415
Registriert: Montag 3. Dezember 2018, 18:43
Schulform: WbK (a. D.)

Re: Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von Christoph Sprung »

Guten Tag,
könnten Sie den fraglichen Report einmal hier einstellen?
Grüße aus Bochum
Christoph Sprung
D.Jakel
Beiträge: 1021
Registriert: Sonntag 2. Dezember 2018, 18:13
Schulform: Gymnasium

Re: Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von D.Jakel »

Im Fall "SchuelerLaufbahnBem is Null" würde die Abfrage "true" liefern, das Feld wäre zwar leer, aber nicht geleert, was Istleer prüft und '' (Doppelhochkommata) entspräche. Das müsste also wohl noch mit eingebaut werden.
mfG, D.Jakel
A.Löser
Fachberater*in
Beiträge: 162
Registriert: Montag 3. Dezember 2018, 19:56
Schulform: Sek I

Re: Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von A.Löser »

Guten Tag,
im Anhang ist ein kleiner Report zu Testzwecken.
Darin werden in DBMemo1 die Bemerkungen (Individual I) ausgebgeben und das Labelfeld beinhaltet nur den Text Label1;
Wenn das Memofeld leer ist, werden Memofeld und Label1 nicht angezeigt.

Die Sichtbarkeit wird über die Zeilenzahl im Memo1 gesteuert.

Man kann auch die beiden Elemente DBMemo1 und Label1 in eine Region setzen, und diese dann
sichtbar schalten in Abhägigkeit von der Zeilenzahl im DBMemo1. Vor allem, wenn noch mehr Elemente
ein/und ausgeblendet werden sollen, ist die Region eine elegante Lösung.

Viellleich hilft dieser Lösungsansatz.

Procedure DetailBeforePrint,
var x:integer;
begin
x:=DBMemo1.lines.count;
dbMemo1.visible:=x>0;
label1.visible:=x>0;

end;
Dateianhänge
Memo-Test.rtm
(7.78 KiB) 26-mal heruntergeladen
Mit freundlichen Grüßen
A. Löser
Benutzeravatar
Raffenberg
Beiträge: 2607
Registriert: Dienstag 25. September 2018, 15:22
Schulform: Gymnasium
Kontaktdaten:

Re: Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von Raffenberg »

Sie müssen den Befehl unter Detail.BeforePrint setzen. Trennen Sie dabei in den Klammern mit Komma:

Code: Alles auswählen

l_AuE.Visible := Not IstLeer(SchuelerlaufbahnBem,'LELS');
Dabei werden die Felder jedoch nur ausgeblendet. Die Reportzeilen rücken nicht zusammen. Hierfür würde ich Überschrift und Memofeld in eine Region setzen und diese ausblenden.
Mit freundlichen Grüßen
Jens Raffenberg
bra
Beiträge: 37
Registriert: Mittwoch 21. Dezember 2022, 15:43
Schulform: HS

Re: Ausblenden von Elementen wenn dbMemo Feld leer

Beitrag von bra »

@Raffenberg
genau so habe ich es gemacht. Ich habe das DBMemo mit dem Label in einen Subreport gepackt und kann ihn (den subreport) nun mit der Abfrage ausblenden. Danke an alle!
- SchildZentral
Antworten