Please enable JavaScript to view this site.

Invantive Estate

De pre-report trigger is een PL/SQL opgeslagen procedure die wordt aangeroepen voorafgaand aan de uitvoering van het daadwerkelijke rapport. De post-report trigger is een PL/SQL stored procedure die wordt aangeroepen volgend op de uitvoering van het daadwerkelijke rapport.

Deze stored procedures worden uitgevoerd in een package. Deze package moet de naam hebben van het rapport, gevolgd door ‘_rpt’, bijvoorbeeld ‘bubs_custom01_rpt’. De procedure pre_report wordt uitgevoerd als pre-report trigger en de procedure post_report als post-report trigger.

Een voorbeeld van een dergelijke package is:

 

create or replace package bubs_custom01_rpt

as

/*

*

* $Header: http://svn.invantive.com/repos/p104/trunk/help/nl/manual/Topics/rap-bouwen-pre-report-trigger.xml 19891 2012-10-09 13:23:03Z gle3 $

*

* (C) Copyright 2004-2009 Invantive Software BV, the Netherlands. All rights reserved..

*

*/

procedure pre_report

( p_functie bubs_functies_v.fte_code%type

)

;

procedure post_report

( p_functie bubs_functies_v.fte_code%type

)

;

--

-- Return the version ID of CVS for the package.

--

function get_version_id

return varchar2

;

end;

/

 

grant execute on bubs_custom01_rpt to &&bubs_user_role

/

 

create or replace package body bubs_custom01_rpt

as

/*

*

* $Header: http://svn.invantive.com/repos/p104/trunk/help/nl/manual/Topics/rap-bouwen-pre-report-trigger.xml 19891 2012-10-09 13:23:03Z gle3 $

*

* (C) Copyright 2004-2009 Invantive Software BV, the Netherlands. All rights reserved..

*

*/

procedure pre_report

( p_functie bubs_functies_v.fte_code%type

)

as

begin

 null;

end

;

procedure post_report

( p_functie bubs_functies_v.fte_code%type

)

as

begin

 null;

end

;

--

-- Return the version ID of CVS for the package.

--

function get_version_id

return varchar2

as

begin

 return '$Header: http://svn.invantive.com/repos/p104/trunk/help/nl/manual/Topics/rap-bouwen-pre-report-trigger.xml 19891 2012-10-09 13:23:03Z gle3 $';

end;

 

end;

/

De pre-report trigger kan gebruikt worden om de prestaties te verbeteren door veelgebruikte gegevens vooraf klaar te zetten in een tijdelijke tabel of door het rapport te voeden met verschillende gegevens, afhankelijk van de instellingen van de gebruiker. Met de volgende pre-report trigger wordt bijvoorbeeld een rapport gevuld met de actuele situatie indien mogelijk en met historische gegevens indien die aangevraagd worden:

--

 -- Delete possible remaining data from a previous report on the same connection.

 --

 delete bubs_fdt_t

 ;

 commit

 ;

 if bubs_session.get_session_reporting_date is null

 then

   --

   -- Current situation requested.

   --

   insert into bubs_fdt_t

   select * from bubs_fdt_r

   ;

   commit

   ;

 else

   --

   -- Historical situation requested.

   -- Somewhat slower.

   --

   insert into bubs_fdt_t

   select * from bubspfdt_r

   ;

   commit

   ;

 end if;

 

In de post-report trigger staat dan:

 

delete bubs_fdt_t

 ;

 commit

 ;

Het is ook mogelijk om bijvoorbeeld in de pre-report trigger de af te drukken gegevens te markeren en ze in de post-report te markeren als zijnde ‘gerapporteerd’.

De post-report trigger wordt normaal alleen gebruikt om de tijdelijke gegevens te verwijderen.