0% found this document useful (0 votes)
53 views3 pages

A Dynamic LOV

This document describes how to create a dynamic list of values (LOV) in Oracle Forms that can display up to 9 columns of data. It uses a predefined LOV control that is populated at runtime by a PL/SQL procedure called Populate_LOV. This procedure accepts parameters for the SQL query, LOV number, title, target item, and whether to display the LOV. The sample form provided demonstrates how to manage 5 dynamic LOVs using this approach.

Uploaded by

SANJAY
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views3 pages

A Dynamic LOV

This document describes how to create a dynamic list of values (LOV) in Oracle Forms that can display up to 9 columns of data. It uses a predefined LOV control that is populated at runtime by a PL/SQL procedure called Populate_LOV. This procedure accepts parameters for the SQL query, LOV number, title, target item, and whether to display the LOV. The sample form provided demonstrates how to manage 5 dynamic LOVs using this approach.

Uploaded by

SANJAY
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

4/19/2018 A Dynamic LOV

Oracle Forms
A Forms dynamic LOV

Home page

The purpose is to manage dynamic LOVs, able to build any LOV of 1 to 9 columns.

The record group is dynamically populated by the SELECT order provided, then the LOV is tuned to fit and display
the corresponding columns.

It uses a pre-defined LOV that can handle 9 columns.

The data selected from the LOV are copied into 9 hidden items stored in a control block (:LOV).
The copy process is done in an Item-level KEY-LISTVAL trigger:

Declare
LB$Ok Boolean ;
LC$Lov Varchar2(30) := Get_Item_Property(:system.trigger_item, LOV_NAME) ;
https://sheikyerbouti.developpez.com/forms/dynamic_lov/dynamic_lov.htm 1/3
4/19/2018 A Dynamic LOV
Begin
If LC$Lov Is not null Then
LB$Ok := Show_Lov(LC$Lov);
If LB$Ok Then
-- get returned values --
:BL.TXT1 := :LOV.RETURN1 ;
End if ;
End if ;
End;

The LOV populating process is done in the POPULATE_LOV() procedure, stored in the program unit of the
sample dialog provided,
But you can, of course, copy it in a PL/SQL library.
(In fact you need to keep together: PKG_COLLECT package, Build_Select_line function and Populate_LOV
procedure)

How to use the dynamic LOV


You can manage 5 different dynamic LOVs in the provided sample dialog.

To populate the LOV, and eventually attach it to an item, use the Populate_LOV() procedure

PROCEDURE Populate_LOV
(
PC$SQL_Order IN VARCHAR2,
PC$NumLOV IN VARCHAR2,
PC$Title IN VARCHAR2,
PC$TargetItem IN VARCHAR2 default null,
PB$Display IN BOOLEAN Default false
)

PC$SQL_Order is the corresponding SQL query


PC$NumLOV is the number of LOV (1-5)
PC$Title is the title for the LOV
PC$TargetItem is the item you want to attach the LOV (bloc_name.item_name)
PB$Display is provided in debug mode to ensure the LOV will display the correct values

e.g.:
Populate_LOV
(
'Select empno, ename, sal from emp',
'1',
'Choose an employee',
'BL.TXT1',
False
);

If you want to provide aliases, they must be given within double-quotes:

Select empno "Number", ename "Name", sal "Salary" from emp

Special case:

If you need to incorporate a function that contains a comma, To_Char(), for instance, replace the comma by a ;

e.g.
select empno, ename, sal, TO_CHAR(hiredate;'DD/MM/YYYY') "HIREDATE" from emp

the ; will be replace by its normal comma at execution time.

The sample dialog

https://sheikyerbouti.developpez.com/forms/dynamic_lov/dynamic_lov.htm 2/3
4/19/2018 A Dynamic LOV

· Download the dynamic_lov.fmb sample dialog for you to test (Forms 9.0.2)

To implement it into you own Forms, you can simply drag the DYN_LOV object group into your module.

https://sheikyerbouti.developpez.com/forms/dynamic_lov/dynamic_lov.htm 3/3

You might also like