| 
  
	         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.
 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 ModuleIn 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.
 
 
 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.
   |