質問

私は2つのコードでグループをグループにするというレポートがあります、私たちはそれらを呼び出します ParentChild.

各ページの上部にあるページヘッダーでは、親名を印刷したいと思います。

レポートには多くの列があり、グループが壊れたら、新しい子名と列ヘッダーを再度表示したいと思います。レポートは次のように見えるはずです:

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 画面に表示されると、グループヘッダーを抑制できません。

ここで私は一体何をしているのですか?より良いアプローチはありますか?

役に立ちましたか?

解決

ページヘッダーではなく、独自のグループのグループヘッダーに「親名」フィールドを置くことをお勧めします。次に、親と子の両方のグループで、[各ページのリピートグループヘッダー]を[グループオプション]ダイアログボックスの[チェック]チェックボックスを選択します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top