Saturday, August 29, 2015

Oracle Form Visual Attributes

Oracle Form Visual Attributes 


In the name of Allah, Most Gracious, Most Merciful      
Praise be to Allah, blessing and peace be upon our prophet Mohammed, his family and his companions. After that,
  
     At the first glance, a well-designed GUI definitely influences on a customer's eye-appealing. Oracle form offers 'Visual Attribute' to predetermine your form visual it controls...
  • Consistency, it controls GUI in coordinating with the Object Library for consistency.
    • Font e.g. it's Size, Style, Width, Weight.
    •  Color and pattern characteristics, e.g. Foreground Color, Background Color, Fill Pattern, White on Black.
  • Validation, it gives a specific, meaningful validation sign as a warning for the user's consideration; if he mistakenly inputs invalid data.

ask Definition:T
  
  Create & apply some common use of a visual attribute

  
Task Solution

   Let's assume we have created and set a visual attribute named 'VA_NAME'. Now, all we need is to recognize how we can use it. Pls. follow and apply such useful code samples:


·        Set an item background color for all records:

SET_ITEM_PROPERTY ('BLOCK_NAME.ITEM_NAME', BACKGROUND_COLOR, 'VA_NAME');

·        Set an item background color for one record:

SET_ ITEM_INSTANCE_PROPERTY ('BLOCK_NAME.ITEM_NAME', record_number, VISUAL_ATTRIBUTE, 'VA_NAME');

·        Set background color for the current cursor record:

SET_ITEM_PROPERTY ('BLOCK_NAME.ITEM_NAME', CURRENT_RECORD_ATTRIBUTE, 'VA_NAME');

·        Set an item prompt font to bold for all records:

SET_ITEM_PROPERTY ('BLOCK_NAME.ITEM_NAME', PROMPT_FONT_WEIGHT, FONT_BOLD);


·        Set an item prompt font to normal for all records:

SET_ITEM_PROPERTY ('BLOCK_NAME.ITEM_NAME', PROMPT_FONT_WEIGHT, FONT_NORMAL);



Steps To Highlight Current record:


1.     Select a visual attribute node.
2.      Click on the green (+) sign to create a new visual attribute
3.     Name a visual attribute it e.g. VA_CUR_RECORD
4.      Invoke the visual attribute's property palette & set a background color.
5.      Invoke the data block's property palette.
6.     Assign 'VA_CUR_RECORD' to Current Record visual attribute property.
7.     Compile, generate, save and run the form.

      The trigger type and position level depends upon your requirement. It is unrestricted. On the other hand, paying more attention to the details of every step in the system life cycle helps in delivering a successful working application with a friendly user interface.  


Learn more about:

·        Create a Dynamic List Item


Hope this helps…

My success only comes from Allah, pls. note your comments and suggestions are great help for me in progress thanks in advance.



Friday, August 14, 2015

Oracle Form Wizard Simulation

 

  

In the name of Allah, Most Gracious, Most Merciful      
Praise be to Allah, blessing and peace be upon our prophet Mohammed, his family and his companions. After that,
   
        Every minute in a developer working day, is an opportunity to invest his/her time and technical skills. On the other hand, if such a system application you are working on is not well analyzed and designed with the client's final approval in the contract, then, you should expect an endless series of a client's demand that will surprise you. This will defiantly affect negatively on the predetermined delivery dead time of your system application.

  Today we will demonstrate one of the uncommon tasks that a client may ask you. If you did not perform such a task before, it's quite relevant to think positively. The first thing you must believe in is that 'Allah' will assist you. Accordingly, you will really be inspired to decompose such a task into smaller logical pieces. Moreover, some work around technically can be applied to perform your project task efficiently and properly.



Create an Oracle Form Wizard. Definition: Task  


  
Task Solution idea

     Although there is no control in Oracle form builder tool palette on the left side of the canvas layout called 'Wizard' the same as 'Tree' but "Yes" in Shaa Allah we can accomplish the task.

Some Guide lines to build a form wizard

·        A wizard consists of a number of related canvases having form items.
·        Navigation between canvases is through creating buttons, e.g. 'Next', 'Previous' and 'Cancel'.
·        Create the database blocks and specify each to a specific canvas.  

Task Solution

Now, let's implement a form wizard manually as follow:

·        Create one content canvas and as many stacked canvases as you need.
·        Create your own database blocks.
·        Specify each block to a specific stacked canvas.
 ·        Create the navigation button, e.g. 'Next', 'Previous' and 'Cancel'.
·        Hence, the whole form wizard's idea relies on connecting all the stacked canvas to each other with the following code in e.g. 'Next' button using WHEN-BUTTON-PRESSED Trigger.


/*
Next button does Dual Tasks:
Task 1: calls the next logical, sequential canvas in a form wizard in the same pattern of the user's manual task
*/

SHOW_VIEW ('CANVAS_NAME');

/*
If there is more than one data block you have to use the following built-in
*/

GO_BLOCK('Block_Name');

/*
If there is at least one data block you have to use the following built-in.
*/

/*
The following destination item MUST BE visible and navigable
*/

GO_ITEM ('Item_Name');

/*
Next button as mentioned, it does Dual Tasks:
Task 2: It Hides the Previous logical, sequential canvas in a form wizard that the user has already filled in.
*/


HIDE_VIEW ('CANVAS_NAME');
 -- Hide the original current canvas in

SYNCHRONIZE;



The same logic of the above code can be applied to other Wizard navigation buttons as 'Previous' and 'Cancel'. Only just a few changes you have to modify as renaming the canvas name, block name and item name.
Definitely, you will need to add more logic to your code to control the client's data entry to enhance the form's application functionality.


El-Hamdu Lellah'; Thanks to Allah, my suggested workaround project task solution 

  works successfully at OTN forum  Thus, i recommend you to give it a try ...



By the time you will find out that there were different solutions to any problem, but it was invisible or unknown to you. In fact, a developer' job reminds me with the old proverb that says "You cannot direct the wind, but you can adjust the sail".
Finally, remember you have to be beneficial to others and leave a good sign in others life to pray to you.

Learn more about:

·        Create a Dynamic List Item


Hope this helps…

My success only comes from Allah, pls. note your comments and suggestions are great help for me in progress thanks in advance.

Wednesday, August 12, 2015

A Simple Oracle Query Form


In the name of Allah, Most Gracious, Most Merciful      
Praise be to Allah, blessing and peace be upon our prophet Mohammed, his family and his companions. After that,


 First step in applying for a new Oracle Developer is not an easy step. Since applying for this job needs you not only to be familiar with the whole track courses, but technically it needs you to be familiar with what makes the work goes forward.

Today, I am going to explain you one of the most common tasks that you should be acquainted with before applying for a new job.

 Furthermore, you should never miss the query form enhancements i added at the end of this article. It simply facilitates the user input in re-query different criteria.


ask Definition:   T


    Create A Simple Query Form Manually.


Task Solution idea

Initially, we all had learned from Oracle documentations, tutorials, or even at educational centers from the very beginning steps how to query data from the database into an Oracle form as follows:

·        In Web-based forms the user press CTRL+F11 function key to retrieve all data from the database.
·        Or press the F11 function key to filter data in Enter Query mode. Then, Press the CTRL+F11 function key to execute the query.

 But today we will learn how to customize a query form in more useful and practical way. The idea of the task solution is based on:

·        Create one master control block with ' Lov' for a search criteria input.
Note: A control block is a block that is not associated with any database table. Items in a control block do not, by default, relate to any database columns.
·        Create a muti-record detail database block.
·        Create a relation between the two previous blocks.


Task Solution

1.     Create a master control block (database= yes) to accept retrieving data from the detail block. Hence, no data source specified in control block property.

2.     Create two List of Value ' Lov'  for two non database item e.g. Semester_Year  and Class_Id; these two text item will copy the value entered or selected from ' Lov'  to the detail block.

3.      Create a detail data block:
o   You must select both Semester_Year  and  Class_Id with other related table items.
o   It is also recommended to make both Semester_Year and Class_Id for the detail block invisible.

4.     Create a relationship between the two blocks with having e.g. Semester_Year and Class_Id (will do the job of Copy Value from Item property) for filtration of data.

5.     Create a PRE-QUERY trigger in the detail data block :
The following code will help to pro-grammatically filter the retrieved data from the related database.
SET_BLOCK_PROPERTY ('SECOND_BLOCK_NAME', DEFAULT_WHERE, 
'Semester_Year = ' ||:FIRST_BLOCK_NAME.Semester_Year || ' AND Class_Id = ' ||:FIRST_BLOCK_NAME.Class_Id); 

6.     Change the Master's block property:
 Navigation Style > Change Data Block.

7.     Create a WHEN-NEW-BLOCK-INSTANCE trigger in the detail data block
       EXECUTE_QUERY;


Query Form Enhancement    

Now it's time to add some enhancement to your form to avoid an expected issue you will face on re-querying other search criteria...
       
When a set of record displayed in the detail block, the user will definitely need to choose another value once again from LOV existed in Master block. Consequently, the relationship between the control block and the detail block will not work since copy value from item will not change and the old set of records will keep appearing in the detail block.

At Header Block create WHEN-NEW-BLOCK-INSTANCE Trigger and paste the following sequential built-ins:

GO_BLOCK('Detail_Block');

CLEAR_BLOCK;

GO_BLOCK('Header_block'); 


All you have to do is to rename the form blocks upon yours.

 
Remember, criticizing your failure and work by all the means to pass through the barriers is a self building esteem to your career path. The profound desire to solve problems and learn new development techniques is really a good sign of an experienced developer you will find later in yourself.  

  
    Learn more about:



Hope this helps…

My success only comes from Allah, pls. note your comments and suggestions are great help for me in progress thanks in advance.