2017-10-12 37 views
1

J'utilise le modèle RTF pour créer un rapport BI. Je dois limiter le nombre de lignes dans 3 enregistrements sur la 1ère page seulement. Les enregistrements/lignes restants continueront à remplir les pages suivantes. Je suis également nécessaire d'imprimer le total de la page. J'ai utilisé le code ci-dessous pour limiter le nombre d'enregistrements, mais il imprime seulement 1 ligne. Toute aide serait appréciée. grâceLimitation de lignes par page dans BI Publisher

<?xdoxslt:set_variable($_XDOCTX, ‘counter’, 0)?> 
<?xdoxslt:set_variable($_XDOCTX, ‘lines_page’, 3)?> 
<?xdoxslt:set_variable($_XDOCTX, ‘tot_lines’, count(.//PdfDraftPurchaseOrderHeaderVORow))?> 
<?xdoxslt:set_variable($_XDOCTX,’remainder’,0)?> 

<?for-each:PdfDraftPurchaseOrderHeaderVORow?> 
<?xdoxslt:set_variable($_XDOCTX, ‘counter’, xdoxslt:get_variable($_XDOCTX, ‘counter’)+1)?> 
<[email protected]:xdoxslt:get_variable($_XDOCTX,’counter’) != xdoxslt:get_variable($_XDOCTX,’tot_lines’)?> 
<[email protected]:position() mod xdoxslt:get_variable($_XDOCTX, ‘lines_page’) = 0?><?call:breaking?><?end if?><?end if?> 
<?end for-each?> 
+0

Pouvez-vous poster le XML simplifié? – EdHayes3

Répondre

1

Essayez d'utiliser ce dans le for-each

<?if: position() = 3?> 
<?split-by-page-break:?> 
<?end if?> 

J'ai fait un exemple simple et cela a fonctionné très bien. J'ai 3 enregistrements sur la première page, et 6 sur le reste.

En ce qui concerne les totaux de page, ajoutez ceci après l'élément que vous voulez résumer, où TotalFieldName est le nom de la variable totale et Element est l'élément numéro XML que vous voulez résumer

<?add-page-total:TotalFieldName;Element?> 

Ajouter ce dans le pied de page pour la page totale, où TotalFieldName est la variable que nous avons créé ci-dessus, et le NumberFormat est quelque chose comme 9G999D00

<?show-page-total:TotalFieldName; 'NumberFormat'?> 
+0

Bonjour, J'ai déjà résolu le problème de division par saut de page, mais le total de la page est toujours en cours. J'ai découvert que l'ajout de données est au format chaîne de caractères, j'ai donc essayé de le convertir en type de données numériques, mais selon la documentation Oracle, la fonction de totalisation des pages ne fonctionne que si le code source co6de contient des valeurs numériques brutes. Les numéros ne doivent pas être préformatés. Y at-il une solution de contournement pour cela? Merci pour votre aide –

+0

Je l'ai lu aussi, et je ne pense pas qu'il y en ait. devrait être facile de corriger la définition de données XML cependant. – EdHayes3

1

vous pouvez utiliser cette syntaxe, si vous voulez casser une page après n nombre de lignes:

<? if position() mod 3 = 0?> 
<?split-by-page-break:?> 
<?end if?> 

ce qui va ramollir la page après 3 lignes, puis au bout de 6 lignes et ainsi de suite pour tous les 3 multiples. Vous pouvez remplacer 3 avec le nombre de lignes souhaité.

Par exemple, position() est le numéro de ligne dans votre source de données XML.