Le module repris ci-dessous montre comment il est possible d'enchaîner l'impression de 2 rapports distincts dans un processus d'impression unique. Ceci donne donc à l'utilisateur l'illusion qu'il n'y a qu'un seul layout. Ceci est particuliètement utile quand le rapport contient des mises en page distinctes de page en page. La méthode peut être étendue à un nombre supérieur de layouts.
local old_REPORTBEHAVIOR
old_REPORTBEHAVIOR=set('REPORTBEHAVIOR')
set REPORTBEHAVIOR 90
select 'monAlias1'
do report_form with 'layout1' ,'preview NOPAGEEJECT'
select 'monAlias2'
do report_form with 'layout2' ,'preview'
select 'monAlias1'
do report_form with 'layout1' ,'noconsole to printer prompt NOPAGEEJECT'
select 'monAlias2'
do report_form with 'layout2' ,'noconsole to printer prompt'
set REPORTBEHAVIOR (m.old_REPORTBEHAVIOR)
Il faut bien prendre les 2 précautions suivantes :
- le script doit bien rétablir le REPORTBEHAVIOR initial
- la commande NOPAGEJECT ne peut être mise sur la dernière commande "report form" du groupe "preview" ou du groupe "to printer", sous peine de voir l'impression différée jusqu'à l'impression de n'importe quel autre impression ultérieure dans Mercator.
Remarque : notez que la commande report form de Visual Fox Pro n'est pas appelée directement. Cet appel est effectué via la procédure Mercator report_form, ce qui rend cette procédure compatible avec le report listener. Remarquez que, dans une impression en chaîne telle que décrite ici, soit tous les rapports doivent utiliser le reportlistener, soit aucun. Il n'est donc pas possible d'appeler dans un même processus un rapport avec reportListener et un autre sans.