""Life is
pleasant. Death is peaceful. It's the transition that's
troublesome." - Isaac Asimov |
Read
first then play the video:
FRM-VIDEO -(Hands-On
09) How to use Trigger (PRE-QUERY) and set dynamically properties
Trigger (PRE-QUERY), Set
dynamically properties
Introduction
A forms trigger is a
block of PL/SQL code that adds functionality to your application.
Triggers are attached to objects in your application. When a trigger
is fired, it executes the code it contains. Each trigger"s name
defines what event will fire it; for instance, a WHEN-BUTTON-PRESSED
trigger executes its code each time you click on the button to which
the trigger is attached. Or, we can say, a forms trigger is a
set of PL/SQL actions that happen each time an event such as
when-checkbox-changed, when-button-pressed, or
when-new-record-instance occurs. You can attach several triggers
to a data query. The most popular of them are the PRE-QUERY and
POST-QUERY.
PRE-QUERY trigger
The PRE-QUERY
trigger fires before the select statement is finalized. The POST-QUERY
trigger fires before selected records are presented to the user. It
fires after records are retrieved but before they are displayed. So,
you can use it to enhance a query"s records in a number of ways.
Your Post-Query trigger can contain code to calculate or populate
control items.
Change an object property
dynamically
You can also change an
object property dynamically. The "SET_objectname_PROPERTY"
built-in subprogram will change an object property dynamically.
Hands-On
On the "Orders"
tab, your client wants to see the most recent or last customer orders.
They ask you to sort the customer orders list based on their order"s
date. They like to have two radio buttons to allow them to manipulate
the order of displayed records by order date.
You have been assigned to
create two radio buttons, Labeled "Ascending" and
"Descending" to
sort displayed record order by "order date."
See Figure 11.
Your tasks are:
1- Create a Radio Group.
2- Create two Radio Buttons
associated with step 1 (Radio Group).
3- Label the first Radio
Button "Ascending."
4- Label the second Radio
Button "Descending."
5- Run and test all user
functional requirements.
F You will learn how
to: create and use PRE-QUERY trigger, set dynamically block property
on a table's data block and execute the query using trigger, use tab
canvas, use "object navigator," use "Data Blocks," use "Layout
Editor," use "Property Palette," use "Run Form," and "Execute
Query."

Figure 11
Open a Module
In the "Object Navigator"
window, highlight Forms. Go to the Main menu and choose "File,"
select "Open" to open an existing form (customer_orders_V08)
from the "iself"
folder.
Save a Module
Click on the "CUSTOMER_ORDERS_V08"
form. The color will change to blue. Now, you should be able to change
the name and then save the Form name as version 09 (customer_orders_v09).
This way the original form is untouched.
Open Layout Editor
In the Main menu, choose
the "Tools" sub-menu and select the "Layout Editor" option. In
the Layout Editor window, make sure that the Canvas box contains your
tab canvas. If not, click on the down arrow next to its box and select
it and also make sure in the Layout Editor window, the BLOCK box
contains the ORD block.
Create a Control Data Block
In the Object Navigator
window, highlight the Data Blocks item and click on the green "+"
sign to create a data block. In the "New Data Block" window,
select the "Build a new data block manually" option and then click
"OK."
Change a property palette
sheets
Now an object was created (BLOCKnn).
Right click on the object and open its Property Palette. Change
"name" to sort_block. And press the enter key. Change
"Database Data Block" to "no." Close the window.
Create a Radio Group and
Radio Button
In the Layout Editor, on
the "BLOCK" box, select the sort_block item and click on the Radio
Button icon to create a radio button. Drag the "+" sign on the
canvas and click where you wish to have your Radio Button. In the "Radio
Group" window, click "new" to create a new "Radio Group" for
sorting.
Notice on the "Object
Navigator," a radio group and radio button were created.
In the Object Navigator,
right click on the new RADIO_GROUPnn item and open its Property
Palette.
In its Property Palette,
change the "name" property to SORT_SELECT or any name you
like and then press the enter key. Change "initial Value" to
"orderdate asc." Then press the enter key and click "OK."
Change "Database Item" to "no." Close the window.
Right click on the
RADIO_BUTTONnn item and open its property palette. Change the
"name" property to RB_SORT_ASC. The RB stands for Radio
Button. Change "radio button value" to "orderdate asc."
Change "Label" to "Ascending." Close the window.
Copy and Paste a Radio
Button
Copy and paste the Radio
Button item. Make sure to place it in the "sort_select" Radio
Group. Then click "OK."
Move an object
Move the new "radio
button" item similar to user requirement with above figure.
Right click on it and open
its Property Palette.
Change a property palette
sheets
In the Property Palette
window, change the NAME to RB_SORT_DESC. Change the "label" to
Descending. Change "Radio Button Value" to "orderdate
desc." Then close the window.
Change an appearance of an
object
Click on the
"Text" icon; and type 'Sort Order Date.' Then click outside
of the text box.
In the Layout Editor, you
can change the appearance of the text by clicking on the B, I,
U icons on the top horizontal toolbar.
Create a Trigger
In the Object Navigator,
highlight the Trigger of the "SORT_SELECT" radio group and click
on the green "+" sign to create a trigger.
WHEN-RADIO-CHANGED"
trigger
In the Triggers window,
type a letter "W" then "R." Select the "WHEN-RADIO-CHANGED"
trigger and click "OK."
PL/SQL Editor
In the PL/SQL Editor, write
a PL/SQL procedure to go to the order block (ORD) and then execute the
query statement.
(PL/SQL Editor)
GO_BLOCK(ord);
EXECUTE_QUERY;
Compile a trigger
Compile the trigger and
close the window.
Create a trigger
In the Object Navigator,
highlight the Trigger of the "ORD" data blocks and click on the
green "+" sign to create a trigger
PRE-QUERY trigger
In the Triggers window,
type a letter "P" then "Q." Select the "PRE-QUERY" trigger
and click "OK."
PL/SQL Editor
In the PL/SQL Editor, write
a PL/SQL procedure to change the "order_by" property of the "ORD"
data block. Notice that the "sort_select" value is changed based
on the radio button you select.
(PL/SQL Editor)
SET_BLOCK_PROPERTY ("ord",
ORDER_BY, :sort_block.sort_select);
Compile Trigger
Compile the trigger. Close
the window.
Run the Form
Run the application.
Execute Query
Click "Execute query."
Navigate
Navigate through the
application and check the sort radio button.
After the testing is done,
close the window and save the changes.
"Education... has
produced a vast population able to read but unable to
distinguish what is worth reading." G. M. Trevelyan (1876 -
1962), English Social History (1942) |
Questions:
Q: Describe the PRE-QUERY
trigger.
Q: How do you set a block
property dynamically?
Q: Can you attach several
triggers to an object in the Form Module?
Q: On the
"Orders" tab, your client wants to see the most recent or
last customer orders. They ask you to sort the customer orders list
based on their order"s date. They like to have two radio buttons to
allow them to manipulate the order of displayed records by order date.
You have been assigned to
create two radio buttons, Labeled "Ascending" and
"Descending" to
sort displayed record order by "order date."
See Figure 11.
Your tasks are:
1- Create a Radio Group.
2- Create two Radio Buttons
associated with step 1 (Radio Group).
3- Label the first Radio
Button "Ascending."
4- Label the second Radio
Button "Descending."
5- Run and test all user
functional requirements.
|