FastReport Tipps und Tricks: Child-Band wird nicht gedruckt: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
(Lösung)
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 4: Zeile 4:
  
 
Das funktioniert meist prima, hat aber einen Fallstrick.
 
Das funktioniert meist prima, hat aber einen Fallstrick.
 +
  
  
Zeile 31: Zeile 32:
 
|Detail-Band
 
|Detail-Band
 
|DetailPositionen
 
|DetailPositionen
|ChildTechniker
+
|style="background-color: green;"|ChildTechniker
 
|- valign="top"
 
|- valign="top"
 
|1. Child-Band
 
|1. Child-Band
|ChildTechniker
+
|style="background-color: green;"|ChildTechniker
|ChildPosText
+
|style="background-color: yellow;"|ChildPosText
 
|- valign="top"
 
|- valign="top"
 
|2. Child-Band
 
|2. Child-Band
|ChildPosText
+
|style="background-color: yellow;"|ChildPosText
|ChildZusatzText
+
|style="background-color: cyan;"|ChildZusatzText
 
|- valign="top"
 
|- valign="top"
 
|3. Child-Band
 
|3. Child-Band
|ChildZusatzText
+
|style="background-color: cyan;"|ChildZusatzText
 
|
 
|
 
|}
 
|}
 +
 +
;Hinweis:
 +
:Wenn man ein Child-Band verschiebt oder löscht und ein neues einfügt, ist diese Kaskadierung u.U. "aufgerissen".
 +
:Eine der Eigenschaften "Child" stimmt nicht oder ist leer.
 +
 +
  
 
== Problem ==
 
== Problem ==
  
 
Trotz korrektem Source-Code wird ein Child-Band nicht gedruckt.
 
Trotz korrektem Source-Code wird ein Child-Band nicht gedruckt.
 +
 +
<nowiki>procedure ChildPositionenOnBeforePrint(Sender: TfrxComponent);</nowiki>
 +
<nowiki>begin</nowiki>
 +
<nowiki>  if ( <Positionen."TextPosition"> = '' ) or ( <AuftragsKopf."KENNZ8"> = 'Nein' ) then</nowiki>
 +
<nowiki>    ChildPositionen.Visible := False</nowiki>
 +
<nowiki>  else</nowiki>
 +
<nowiki>    ChildPositionen.Visible := True;</nowiki>
 +
<nowiki>end;</nowiki>
 +
  
  
 
== Ursache ==
 
== Ursache ==
  
Vermutlich hat das Band, dessen Child das Child-Band ist, nicht die Option
+
Vermutlich hat das Band, dessen Child es ist, nicht die Option
  
 
  Child drucken wenn unsichtbar
 
  Child drucken wenn unsichtbar
 +
 +
Somit ist das Child-Band unsichtbar, wenn das zuvor liegende Band unsichtbar ist.
  
  

Aktuelle Version vom 18. September 2017, 21:41 Uhr

1 Allgemeines

Ein Child-Band wird verwendet, um einen Bereich (z.B. die Details) eines Reports ein- oder auszuschalten, abhängig von bestimmten Feld- oder Parameter-Werten.

Das funktioniert meist prima, hat aber einen Fallstrick.


2 Die Logik der Child-Bänder

Ein Master- oder Detail-Band kann ein Child-Band haben.

Jedes Child-Band kann wiederum ein Child-Band haben.

Die Bänder sind als "kaskadiert":

  • Ganz oben das Haupt-Band (Master- oder Detail-Band)
  • Darunter das 1. Child-Band, das zu Hauptband gehört. Das Hauptband oben hat also in der Eigenschaft "Child" das 1. Child-Band.
  • Darunter das 2. Child-Band, das zum 1. Child-Band gehört. Das 1. Child-Band hat also in der Eigenschaft "Child" das 2. Child-Band.
  • Darunter das 3. Child-Band, das zum 2. Child-Band gehört. Das 2. Child-Band hat also in der Eigenschaft "Child" das 1. Child-Band.

Beispiel:

Band Name Child-Eigenschaft
Detail-Band DetailPositionen ChildTechniker
1. Child-Band ChildTechniker ChildPosText
2. Child-Band ChildPosText ChildZusatzText
3. Child-Band ChildZusatzText
Hinweis
Wenn man ein Child-Band verschiebt oder löscht und ein neues einfügt, ist diese Kaskadierung u.U. "aufgerissen".
Eine der Eigenschaften "Child" stimmt nicht oder ist leer.


3 Problem

Trotz korrektem Source-Code wird ein Child-Band nicht gedruckt.

procedure ChildPositionenOnBeforePrint(Sender: TfrxComponent);
begin
  if ( <Positionen."TextPosition"> = '' ) or ( <AuftragsKopf."KENNZ8"> = 'Nein' ) then
    ChildPositionen.Visible := False
  else
    ChildPositionen.Visible := True;
end;


4 Ursache

Vermutlich hat das Band, dessen Child es ist, nicht die Option

Child drucken wenn unsichtbar

Somit ist das Child-Band unsichtbar, wenn das zuvor liegende Band unsichtbar ist.


5 Lösung

Klicken Sie mit der rechten Maustaste auf das Band und schalten Sie diese Option ein:

FastReport ChildBand Option Detail 01.png


Empfehlung

Es empfiehlt sich, diese Option bei allen Bändern einzuschalten!



6 Links