Oracle Forms: A Dynamic Report Launcher
Oracle Forms: A Dynamic Report Launcher
Home page
1. Purpose
Required
Datatype
Hint text
Default value
Format mask
LOV select order
Validation rule
PROCEDURE Init_Params IS
LC$Req Varchar2(512) ;
Cursor C_PARAMS IS
Select *
From REP_PARAM
Where REP_NUM = :REP.REP_LIST
Order by REP_PAR_ORDER ;
LR$Rec C_PARAMS%ROWTYPE ;
LN$I Pls_Integer := 1 ;
BEGIN
End if ;
END;
PROCEDURE Display_Params IS
LN$PosY Pls_integer ;
LC$Item Varchar2(61) ;
LC$First Varchar2(61) ;
LC$Prec Varchar2(61) ;
LN$I Pls_Integer ;
LN$C Pls_Integer := 1 ;
LN$N Pls_Integer := 1 ;
LN$D Pls_Integer := 1 ;
LN$Height Pls_Integer := 0 ;
BEGIN
-- Show parameters --
LN$I := 1 ;
For i IN PKG_VARS.TB_Params.First .. PKG_VARS.TB_Params.Last Loop
PKG_VARS.TB_Items(i) := LC$Item ;
If LN$I = 1 Then
LC$First := 'PARAMS.' || LC$Item ;
End if ;
Set_Item_Property( LC$Item, VISIBLE, PROPERTY_TRUE ) ;
Set_Item_Property( LC$Item, ENABLED, PROPERTY_TRUE ) ;
Set_Item_Property( LC$Item, INSERT_ALLOWED, PROPERTY_TRUE ) ;
Set_Item_Property( LC$Item, UPDATE_ALLOWED, PROPERTY_TRUE ) ;
Set_Item_Property( LC$Item, Y_POS, LN$PosY ) ;
-- Default value --
If PKG_VARS.TB_Params(i).REP_PAR_DEFAULT IS NOT NULL Then
Copy( PKG_VARS.TB_Params(i).REP_PAR_DEFAULT, LC$Item ) ;
End if ;
-- Parameter name --
Set_Item_Property( LC$Item, TOOLTIP_TEXT,
PKG_VARS.TB_Params(i).REP_PAR_REP_NAME ) ;
-- Hint text --
Set_Item_Property( LC$Item, HINT_TEXT, PKG_VARS.TB_Params(i).REP_PAR_HINT )
;
-- Format mask --
Set_Item_Property( LC$Item, FORMAT_MASK,
PKG_VARS.TB_Params(i).REP_PAR_FORMAT_MASK ) ;
-- Case restriction --
If PKG_VARS.TB_Params(i).REP_PAR_CASE = 'U' Then
Set_Item_Property( LC$Item, CASE_RESTRICTION, UPPERCASE ) ;
ElsIf PKG_VARS.TB_Params(i).REP_PAR_CASE = 'L' Then
Set_Item_Property( LC$Item, CASE_RESTRICTION, LOWERCASE ) ;
End if ;
-- Required ? --
If PKG_VARS.TB_Params(i).REP_PAR_REQUIRED = 'Y' Then
Set_Item_Property( LC$Item, REQUIRED, PROPERTY_TRUE ) ;
End if ;
LC$Prec := LC$Item ;
LN$I := LN$I + 1 ;
LN$PosY := LN$PosY + Get_Item_Property( LC$Item, HEIGHT ) ;
End loop ;
END;
If a LOV select order is setted on a parameter, you can display the
associated LOV
This is the code that constructs the LOV, called in the When-New-Item-
Instance trigger:
Display_Lov( :REP.REP_LIST, Get_Block_Property( 'PARAMS', CURRENT_RECORD )) ;
PROCEDURE Display_Lov
(
PN$Num IN NUMBER,
PN$Col IN NUMBER
) IS
LC$Select Varchar2(2000) ;
LC$Title Varchar2(256) ;
rg_name Varchar2(20) := 'RG_GROUP' ;
rg_id RecordGroup ;
err Number ;
c NUMBER;
d NUMBER;
col_cnt INTEGER;
rec_tab dbms_sql.desc_tab2;
col_num NUMBER;
LC$Lov Varchar2(10) ;
LC$Col Varchar2(100) ;
LC$Item Varchar2(61) := :System.Trigger_Item ;
LN$Width Pls_Integer ;
LN$TotWidth Pls_integer := 0 ;
BEGIN
Exception
When NO_DATA_FOUND Then
goto the_end ;
End ;
BEGIN
c := dbms_sql.open_cursor;
dbms_sql.parse(c, LC$Select, 1);
d := dbms_sql.EXECUTE(c);
EXCEPTION
WHEN OTHERS THEN
dbms_sql.close_cursor(c);
Raise form_trigger_failure ;
END ;
dbms_sql.describe_columns2(c, col_cnt, rec_tab);
dbms_sql.close_cursor(c);
col_num := rec_tab.last ;
-- LOV name --
LC$Lov := 'LV' || ltrim( to_char( col_num ) ) || 'C' ;
<<the_end>>
null ;
END;
(U)ppercase
(L)owercase
(M)ixt
LOV order allows to define the SELECT order for the lov attached on
the parameter.
You can define SELECT order with 1 up to 5 columns.
Each column must have an alias (COL1 to COL5)
Validation rule allows to set a valid SQL to validate the parameter.
1. EMP
2. DEPT
3. REP
4. REP_PARAM
Open
the /reports/EMP_LIST.rdf and /reports/DEPT_LIST.rdf modules
(Oracle Reports 9.0.2)
Open
the /forms/DYN_REP.FMB and /forms/DYN_REP_BUILD.FMB mo
dules (Oracle Forms 9.0.2)