Question

J'ai un rapport que les groupes de deux codes, nous allons appeler les Parent et Child.

En haut de chaque page, en-tête, je veux imprimer le nom du parent.

Il y a un certain nombre de colonnes dans le rapport, et quand les pauses de groupe, je veux afficher le nouveau nom de l'enfant, ainsi que les en-têtes de colonne. Le rapport devrait ressembler à ceci:

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

Si un groupe d'enfants s'enroule autour de la nouvelle page, cependant, je veux réafficher le nom des enfants et des sous-titres de colonne avant d'afficher à nouveau les données.

Pour cela, je l'ai créé une tête de page qui contient les objets suivants:

Parent Name
    Child Name
    Col1 Col2 Col3 Col4 Col5 Col6

Dans l'en-tête de page est une RowReset variable qui contient la formule suivante:

WhilePrintingRecords;
Shared numberVar nRowCount := 0

Ensuite, dans chaque rangée de détail, ainsi que les bas de page du groupe 1 et du groupe 2 Pied de sections, je la formule RowIncrement suivante:

WhilePrintingRecords;
Shared numberVar nRowCount := nRowCount + 1;

Enfin, dans chaque section en-tête du groupe 2, je la formule de suppression conditionnelle suivante:

WhilePrintingRecords;
Shared numberVar nRowCount;
IF (PageNumber <> 1) AND (nRowCount = 0 OR nRowCount = 0.00) THEN
    True
ELSE
    False

Qu'est-ce que cette tentative de faire est de supprimer l'en-tête de groupe d'enfants si nous sommes sur une nouvelle page, et aucun enregistrement de détail n'a encore été imprimé, afin d'éviter ce qui suit de se produire:

Parent Name                          ---+
    Child Name                          +-- Page header
    Col1 Col2 Col3 Col4 Col5 Col6    ---+

    Child Name                       ---+-- Group header 2
    Col1 Col2 Col3 Col4 Col5 Col6    ---+

Pour une raison quelconque je ne peux pas comprendre, environ 40 pages dans le rapport, je reçois exactement que si; un record-tête, suivi d'un en-tête du groupe 2 enregistrement. Si je crée une formule qui contient la formule de suppression conditionnelle, il affiche TRUE, mais l'en-tête de groupe ne fonctionne toujours pas supprimé.

Si je romps le code afin qu'il vérifie que l'un des conditionals (soit PageNumber <> 1 ou nRowCount = 0) puis l'en-tête du groupe 2 supprime correctement.

J'ai même essayé de briser les choses:

WhilePrintingRecords;
Shared numberVar nRowCount;
booleanVar bSuppress:= False;

IF PageNumber <> 1 THEN bSuppress:= True;
IF (bSuppress) THEN (IF nRowCount = 0 THEN True ELSE False);

Il affiche également True lorsqu'il est affiché sur l'écran, mais ne parvient pas à supprimer l'en-tête du groupe.

Que diable suis-je tort ici? Y at-il une meilleure approche que je pourrais prendre?

Était-ce utile?

La solution

Je suggère de mettre le champ « nom de parent » dans l'en-tête de groupe de son propre groupe, plutôt que dans l'en-tête de page. Puis, dans les deux groupes de parents et de l'enfant, sélectionnez « Répéter tête de groupe case à cocher « chaque page dans la case des options de groupe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top