Crystal Reportsグループヘッダー抑制式は機能しません
-
27-09-2019 - |
質問
私は2つのコードでグループをグループにするというレポートがあります、私たちはそれらを呼び出します Parent
と Child
.
各ページの上部にあるページヘッダーでは、親名を印刷したいと思います。
レポートには多くの列があり、グループが壊れたら、新しい子名と列ヘッダーを再度表示したいと思います。レポートは次のように見えるはずです:
Parent Name
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
XXXX XXXX XXXX XXXX XXXX XXXX
XXXX XXXX XXXX XXXX XXXX XXXX
Child Total: XXXX
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
XXXX XXXX XXXX XXXX XXXX XXXX
ただし、子グループが新しいページに包まれている場合は、データを再度表示する前に、子名と列のキャプションを再表示したいと思います。
これを達成するために、次のオブジェクトを含むページヘッダーを作成しました。
Parent Name
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
ページには変数があります RowReset
これには次の式が含まれています。
WhilePrintingRecords;
Shared numberVar nRowCount := 0
次に、各詳細行、およびグループフッター1とグループフッター2セクションで、次のことがあります RowIncrement
方式:
WhilePrintingRecords;
Shared numberVar nRowCount := nRowCount + 1;
最後に、各グループヘッダー2セクションで、次の条件付き抑制式があります。
WhilePrintingRecords;
Shared numberVar nRowCount;
IF (PageNumber <> 1) AND (nRowCount = 0 OR nRowCount = 0.00) THEN
True
ELSE
False
これがやろうとしているのは、新しいページにいる場合はチャイルドグループヘッダーを抑制し、以下の発生を防ぐために詳細な記録がまだ印刷されていないことです。
Parent Name ---+
Child Name +-- Page header
Col1 Col2 Col3 Col4 Col5 Col6 ---+
Child Name ---+-- Group header 2
Col1 Col2 Col3 Col4 Col5 Col6 ---+
なんらかの理由で、レポートに約40ページがわかりませんが、まさにそれを手に入れます。ページヘッダーレコードに続いて、グループヘッダー2レコードが続きます。条件付き抑制式を含む式を作成すると、表示されます TRUE
, 、しかし、グループヘッダーはまだ抑制されません。
コードを分割して、条件の1つだけをチェックする場合(どちらも PageNumber <> 1
また nRowCount = 0
)次に、グループヘッダー2が正しく抑制されます。
私はこれを試してみさえしました。
WhilePrintingRecords;
Shared numberVar nRowCount;
booleanVar bSuppress:= False;
IF PageNumber <> 1 THEN bSuppress:= True;
IF (bSuppress) THEN (IF nRowCount = 0 THEN True ELSE False);
表示も表示されます True
画面に表示されると、グループヘッダーを抑制できません。
ここで私は一体何をしているのですか?より良いアプローチはありますか?
解決
ページヘッダーではなく、独自のグループのグループヘッダーに「親名」フィールドを置くことをお勧めします。次に、親と子の両方のグループで、[各ページのリピートグループヘッダー]を[グループオプション]ダイアログボックスの[チェック]チェックボックスを選択します。