Form Interview Questions

1.     What is an SQL * FORMS?

SQL *forms is 4GL tool for developing and executing; Oracle based interactive application.

2.     What is the maximum size of a form?

255 character width and 255 characters Length.

3.     Name the two files that are created when you generate the form give the filex extension?

INP (Source File)
FRM (Executable File)

4.     How do you control the constraints in forms?

Select the use constraint property is ON Block definition screen.

5.     Give the sequence of execution of the various report triggers?

Before form, after form, before report, between page, after report.

6.     Committed block sometimes refer to a BASE TABLE? True or False.


7.     Can we create two blocks with the same name in form 3.0?


8.     While specifying master/detail relationship between two blocks specifying the join condition is a must? True or

9.     What is a Trigger?

A piece of logic that is executed at or triggered by a SQL *forms event.

10.     What are the types of TRIGGERS?

1. Navigational Triggers.
2. Transaction Triggers.

11.     What are the different types of key triggers?

Function Key

12.     What is the difference between a Function Key Trigger and Key Function Trigger?

Function key triggers are associated with individual SQL*FORMS function keys
You can attach Key function triggers to 10 keys or key sequences that normally do not perform any SQL * FORMS      operations. These keys referred as key F0 through key F9.

13.     What does an on-clear-block Trigger fire?

It fires just before SQL * forms the current block.

14.     How do you trap the error in forms 3.0?

Using On-Message or On-Error triggers.

15.     State the order in which these triggers are executed?


16.     What is the usage of an ON-INSERT,ON-DELETE and ON-UPDATE TRIGGERS?

These triggers are executes when inserting, deleting and updating operations are performed and can be used to     change the default function of insert, delete or update respectively.
For Eg, instead of inserting a row in a table an existing row can be updated in the same table.

17.     When will ON-VALIDATE-FIELD trigger executed?

It fires when a value in a field has been changed and the field status is changed or new and the key     has been pressed. If the field status is valid then any further change to the value in the field will not fire the     on-validate-field trigger.

18.     A query fetched 10 records How many times does a PRE-QUERY Trigger and POST-QUERY Trigger will get executed ?

PRE-QUERY fires once.
POST-QUERY fires 10 times.

19.     What is the difference between ON-VALIDATE-FIELD trigger and a POST-CHANGE trigger?

When you changes the Existing value to null, the On-validate field trigger will fire post change trigger will not         fire. At the time of execute-query post-chage trigger will fire, on-validate field trigger will not fire.

20.     What is the difference between an ON-VALIDATE-FIELD trigger and a trigger?

On-validate-field trigger fires, when the field Validation status New or changed.
Post-field-trigger whenever the control leaving form the field, it will fire.

21.     What is the difference between a POST-FIELD trigger and a POST-CHANGE trigger?

Post-field trigger fires whenever the control leaving from the filed.
Post-change trigger fires at the time of execute-query procedure invoked or filed validation status changed.

22.     When is PRE-QUERY trigger executed?

When Execute-query or count-query Package procedures are invoked.

23.     Give the sequence in which triggers fired during insert operations, when the following 3 triggers are defined at      the smae block level?


24.     Can we use GO-BLOCK package in a pre-field trigger?


25.     Is a Keystartup trigger fires as result of a operator pressing a key explicitly?


26.     How can you execute the user defined triggers in forms 3.0?

Execute_Trigger (trigger-name)

27.     When does an on-lock trigger fire?

It will fires whenever SQL * Forms would normally attempt to lock a row.

28.     What is Post-Block is a

a. Navigational Trigger.
b. Key trigger
c. Transaction Trigger.

29.     What is the difference between keystartup and pre-form?

Key-startup triggers fires after successful navigation into a form.
Pre-form trigger fires before enter into the form.

30.     What is the difference between keystartup and pre-form?

Key-startup triigger fires after successful navigation into a form.
Pre-form trigger fires before enter into the form.

31. What is use of APPCORE library?

The APPCORE Contains packages & procedures for forms to support menu, toolbar and other standard behaviours.

32. What is use of APPDAYPK library?
The APPDAYPK library contains the packages that control the Oracle Applications Calendar feature. The calendar (or the date picker) is a utility that oracle apps provide to pick the dates for a date type field.

33. What is use of FNDSQF library?
It contains the routines for handling Message Dictionary, felxfields, prpfiles, concurrent processing, mulicurrency, WHO etc.

34. Which are the Oracle forms triggers which should not be modified?
Following are some of the form triggers that must not be modified.















35. Where does the FMB files(Forms source code) reside in Server? or What is the location of .FMB files in a server?

36. What is template form?
Template Form is a form that is to be used for building a new form and this form references all the standard libraries like(FNDSQF,APPCORE,APPCORE2,APPDAYPK,CUSTOM) which are used to build a form as per the oracle standards. This Template form has been provided by Oracle.

Navigation for this Template form is:


37. What is use of custom library?
Custom.pll is used to implement any new pl/sql code that you would need to write in customizing forms.

38. Name the directories where you have to copy your Fmb and Fmx files?
FMB has to be placed on $AU_TOP/forms/US and FMX has to be placed in the custom top!

39. What are the steps you have to follow to register a Form?
ftp the form (.fmx) to $CUSTOM_TOP/forms/US folder in server.

ftp the form (.fmb) to $AU_TOP/form/US folder (not mandatory but fmb’s are kept in this location)

add form to a function

Add this function to menu/submenu

Assign responsibility to this menu/submenu

And add this responsibility to the user.

40. Why are views used in the data blocks of a standard form instead of mapping directly into the base tables?
Because base tables have huge amount of data due to which if we work directly on the base tables, it will hit the performance. Also, views are simplified versions of the base tables which are easy to understand and hence to work upon.

41. What are  OPEN_FORM, CALL_FORM, NEW_FORM? What are the differences between them?

CALL_FORM : It calls the other form. but parent remains active, when called form completes the operation , it releases lock and control goes back to the calling form.
When you call a form, Oracle Forms issues a savepoint for the called form. If the CLEAR_FORM function causes a rollback when the called form is current, Oracle Forms rolls back uncommitted changes to this savepoint.

OPEN_FORM : When you call a form, Oracle Forms issues a savepoint for the called form. If the CLEAR_FORM function causes a rollback when the called form is current, Oracle Forms rolls back uncommitted changes to this savepoint.

NEW_FORM : Exits the current form and enters the indicated form. The calling form is terminated as the parent form. If the calling form had been called by a higher form, Oracle Forms keeps the higher call active and treats it as a call to the new form. Oracle Forms releases memory (such as database cursors) that the terminated form was using.
Oracle Forms runs the new form with the same Runform options as the parent form. If the parent form was a called form, Oracle Forms runs the new form with the same options as the parent form.

42. What is a visual attribute in Oracle Forms?
Visual attributes are the font, color, and pattern properties that you set for form and menu objects that appear in your application’s interface.

43.How many types of Master and Detail relationships are there in Oracle Forms?
The various Master and Detail Relationships in oracle forms are:
a) NonIsolated = The Master cannot be deleted when a child is existing
b) Isolated = The Master can be deleted when the child is existing
c) Cascading = The child gets deleted when the Master is deleted.

44. What are the triggers related to master-Details Forms.
Following are three triggers which are created automatically as soon as we create a mater Details Block on oracle Forms.

45. What are the different canvas types available in Oracle forms?
Below are the 5 canvas types available in Oracle Forms
(a) Stacked canvas
(b) Content canvas
(c) Horizontal Tool bar
(d) Vertical Toolbar
(e) Tab canvas

46. What are the types of Blocks in Oracle Forms?
Base Table block – based on database table/views
Control Block – non-database items are placed here like Calculation values,buttons,checkbox etc.

47. What are the Various Block Coordination Properties?
The various Block Coordination Properties are
a) Immediate Default Setting: The Detail records are shown when the Master Record are shown.
b) Deffered with Auto Query: Oracle Forms defer fetching the detail records until the operator navigates to the detail block.
c) Deffered with No Auto Query: The operator must navigate to the detail block and explicitly execute a query

48. What are the different windows events activated at runtimes?
Within these triggers, you can examine the built in system variable system. event_window to determine the name of the window for which the trigger fired.

49. How are Visual Attributes, Property Classes and Object Groups related?
So for Object groups we have Property Classes and for property classes we have visual attributes.

50. What are the trigger associated with image items?
When-image-activated fires when the operators double clicks on an image itemwhen-image-pressed fires when an operator clicks or double clicks on an image item.

51. What is trigger associated with the timer?

52. When a form is invoked with call_form, Does oracle forms issues a save point?

53. What is new_form built-in?
When one form invokes another form by executing new_form oracle form exits the first form and releases its memory before loading the new form calling new form completely replace the first with the second. If there are changes pending in the first form, the operator will be prompted to save them before the new form is loaded.

54. Can you execute a DDL statements from Oracle Forms?
No. DDL (Data Definition Language) commands like CREATE, DROP and ALTER are not directly supported from Forms because your Oracle Forms are not suppose to manipulate the database structure.
A statement like CREATE TABLE X (A DATE); will result in error:
Encountered the symbol “CREATE” which is a reserved word.
However, you can use the FORMS_DDL built-in to execute DDL statements. Eg:

55. Can you execute dynamic SQL from Oracle Forms?
Yes, use the FORMS_DDL built-in or call the DBMS_SQL database package from Forms. Eg:
FORMS_DDL(‘INSERT INTO X VALUES (‘ || col_list || ‘)’);
Just note that FORMS_DDL will force an implicit COMMIT and may de-synchronize the Oracle Forms COMMIT mechanism.

56. What is the difference between the following statements?
Form A: Insert into emp(ename) values (‘Scott ‘);
Form B: FORMS_DDL(‘insert into emp(ename) values(‘||”Scott’)’);

User have to commit the form manually for Form A
Once the Form B statement executes, it will be implicitly commited.

57. What are the vbx controls?
Vbx control provide a simple method of building and enhancing user interfaces. The controls can use to obtain user inputs and display program outputs.vbx control where originally develop as extensions for the ms visual basic environments and include such items as sliders, rides and knobs.

58. What is the “LOV of Validation” Property of an item? What is the use of it?
When LOV for Validation is set to True, Oracle Forms compares the current value of the text item to the values in the first column displayed in the LOV. Whenever the validation event occurs. If the value in the text item matches one of the values in the first column of the LOV, validation succeeds, the LOV is not displayed, and processing continues normally. If the value in the text item does not match one of the values in the first column of the LOV, Oracle Forms displays the LOV and uses the text item value as the search criteria to automatically reduce the list.

59. How do you use the same lov for 2 columns?
We can use the same lov for 2 columns by passing the return values in global values and using the global values in the code

60. What are the difference between lov & list item?
Lov is a property where as list item is an item. A list item can have only one column, lov can have one or more columns.

61. What is the difference between static and dynamic lov?
The static lov contains the predetermined values while the dynamic lov contains values that come at run time

62. What are the different types of Record Groups?
Query Record Groups
NonQuery Record Groups
State Record Groups

63.What are the different display styles of list items?
Combo box

64. How can you bypass the Oracle login screen?
The first thing that the user sees when using runform is the Oracle logon prompt asking them for their username, password, and database to connect to. You can bypass this screen or customise it by displaying your own logon screen.
— ON-LOGON Trigger
uname varchar2(10);
pass varchar2(10);
uname := ‘username’;
pass := ‘password’;
logon(uname, pass || ‘@connect_database’);
Alternatively, edit the formsweb.cfg file located in ORACLE_HOME/forms/server creating a config like this:
and after that, access the application like this:

65. What are parameters?
Parameters provide a simple mechanism for defining and setting the valuesof inputs that are required by a form at startup. Form parameters are variables of type char,number,date that you define at design time.

66. What are difference between post database commit and post-form commit?
Post-form commit fires once during the post and commit transactions process, after the database commit occurs. The post-form-commit trigger fires after inserts, updates and deletes have been posted to the database but before the transactions have been finalized in the issuing the command. The post-database-commit trigger fires after oracle forms issues the commit to finalized transactions.

67. How Can you Maximize/ Minimize a Window in Forms?
On MS-Windows, Forms run inside a Windows Multiple-Document Interface (MDI) window. You can use SET_WINDOW_PROPERTY on the window called FORMS_MDI_WINDOW to resize this MDI (or any other named) window.
set_window_property(FORMS_MDI_WINDOW, POSITION, 7, 15);
set_window_property(‘my_window_name’, WINDOW_STATE, MAXIMIZE);

68. What are the different modals of windows?
Modalless windows
Modal windows

69. What are modal windows?
Modal windows are usually used as dialogs, and have restricted functionality compared to modelless windows. On some platforms for example operators cannot resize, scroll or iconify a modal window.

70. Can an Forms FMX be moved from one operating system to another?
No, FMX files are operating system dependent. On the other hand, FMB’s are not. So, you can just copy your FMB files to the new operating system and regenerate them.

71. How does one suppress or customize error messages in Forms?
One can either set the message level using the system variable SYSTEM.MESSAGE_LEVEL or trap errors using the ON-ERROR or ON-MESSAGE triggers.
Set to 0, 5, 10, 15, 20, 25 to suppress all messages with severity below this level. The default level is 0. Messages with a level higher than 25 cannot be suppressed. See the “Forms Error Messages Manual” for more details about the various MESSAGE_LEVEL’s:
0 – Default value. All types of messages from the other levels of severity.
5 – Reaffirms an obvious condition.
10 – Indicates that the operator has made a procedural mistake.
15 – Declares that the operator is attempting to perform a function for which the form is not designed.
20 – Indicates a condition where the operator cannot continue an intended action due to a problem with a trigger or another outstanding condition.
25 – Indicates a condition that could result in the form performing incorrectly.
>25 – Indicates a message severity level that you cannot suppress via the SYSTEM.MESSAGE_LEVEL system variable.
/* For suppressing FRM-40100: At first record. */
/* For suppressing FRM-40350: Query caused no records to be retrieved. */

72. Forms dont allow to use restricted built-ins. What can be done to use these built-ins.
How to get around the “can’t use a restricted built-in in built-in XXX” message:
1. Create a TIMER at the point where you want the navigation to occur. Eg.
create_timer(‘TIMER_X’, 5, NO_REPEAT);
2. Code a WHEN-TIMER-EXPIRED trigger to handle the navigation
tm_name VARCHAR2(20);
tm_name := Get_Application_Property(TIMER_NAME);
IF tm_name = ‘TIMER_X’ THEN
Dirty but effective (didn’t Oracle promise to fix this feature?).

73. Can one change the mouse pointer in Forms?
The SET_APPLICATION_PROPERTY build-in in Oracle Forms allows one to change the mouse pointer.
The following cursor styles are supported:
BUSY – Specifies a busy symbol
CROSSHAIR – Specifies a crosshair symbol
DEFAULT – Specifies an arrow symbol
HELP – Specifies a help symbol/ Displayed as a hand in WebForms
INSERTION – Specifies an insertion symbol
HAND – Hand cursor pointer for Developer 6.0 and above

74. Why doesn’t my messages show on the screen?
Regardless of whether you call the MESSAGE() built-in with ACKNOWLEDGE, NO_ACKNOWLEDGE, or with no mode specification at all, your message may or may not be displayed. This is because messages are displayed asynchronously. To display messages immediately, use the SYNCHRONIZE build-in:
message(‘…’); synchronize;
This can also be used to execute a query while the user is looking at the results of a previous query.

75. How can you iterate through items and records in a specified block?
You can use NEXT_FIELD to iterate (loop) through items in a specific block and NEXT_RECORD to iterate through records in a block. Code example:
OriPos := TO_NUMBER(:System.Trigger_Record);
— do processing
IF (:System.Last_Record = ‘TRUE’) THEN

76. What are the types of triggers in forms ?

Interface triggers (ie,when-button-pressed,key- etc)
Navigational tri (e.g, pre-form,pre- and post- tri)
Transactional tri (e.g on- tri,when-post-form commit)
Query time tri ( pre-query,post-query)
Master-detail tri(e.g on-check-delete-master,on-clear-details,on-populate-details)
Validation tri (e.g when-validate-item,when-validate-record)

77.  What are different triggers got created when creating master-detail relation ?

Block-level trigger
Form level triggers
Procedures got created

78.  Is possible to read registry values in the form?
Yes,by using procedure d2kutil.pll available in ORACLE_HOME/tools/devdemo60/demo/forms dir
Read_registry,write_registry procedure in WIN_API_ENVIRONMENT pakage will read /write

79.How to make insert allowed and update allowed on for the record instance
By setting app_item_property.set_property(item,ALTERABLE,PROPERTY_ON);
Is similar to set_item_instance_property(item name,current_record,insert_allowed,property_on);
“ update_allowed, “
set_item_property( item_name,insert_allowed,property_on);
set_item_property( item_name,updatet_allowed,property_on);

80. They are update_allowed,insert_allowed,navigable proberty in both item level and instance level so if you set both which will take effect.
Always the item level will take presdence ,ie) if you have off in item and on at instance then over all effect is off

81.How to assign/maintain running no’s to the multi record block.
At key-execute query call app_record.for_all_records(‘user named triger_name’);
Key-delrec “ “
This routine will trigger this user named trigger written at block level to fire as many times as the no of records and it will go the current record so create the parameter and increment the parameter and assign it to the number field.

82.How to show fixed fields ( current record indicator,scroll bar ) for tab canvas that has same record fields in more than one tab.
Create the stacked canvas and keep those fields there

83.What are tab canvas additions in forms 6I
when-tab-page-changed ( form level trigger, if you write in block level then no use)

84.What are java beans additions in forms 6I
Item Property implementation class

85.Is when-window-open trigger exits ?
No ,only the following trigger exits for window
2. When-Window-Activated
3. When-Window-Deactivated
4. When-Window-Resized

86.What is the diff between when-validate-item and post-change
Form Builder fetches a non-NULL value into an item. In this case, the When-Validate-Item trigger does not fire. If you want to circumvent this situation and effectively get rid of the Post-Change trigger, you must include a Post-Query trigger in addition to your When-Validate-Item trigger.

87.How to set the menu for single record block ?
At when-new-record-instance call the following buildi-ins

88.Execution style of the trigger should be either override or before never after in apps.
In general use before,
Usage: Specifies how the current trigger code should execute if there is a trigger with the same name defined at a higher level in the object hierarchy.
The following settings are valid for this property:
Override Specifies that the current trigger fire instead of any trigger by the same name at any higher scope. This is known as “override parent” behavior.
Before Specifies that the current trigger fire before firing the same trigger at the next-higher scope. This is known as “fire before parent” behavior.
After Specifies that the current trigger fire after firing the same trigger at the next-higher scope. This is known as “fire after parent” behavior.

89.At what levels forms will sync it internal setting with the menu entries ?
At when-new-record-insance, when-new-block-instance,when-new-item-instance
So if you are in the block and then you are making insert allowed off then you have to call the build-in app_standard.synchronize to sync the menu entries.

90.Is possible to hide the tab page ?
(tab_page_id TAB_PAGE,
property NUMBER,
value NUMBER);

VISIBLE, ENABLED property_false

91.How to code complicated tab_canvas ?
modify the sample code supplied by oracle in FND_TOP/resource fndtabs.txt and fndtanff.txt ?

92.How to force form to do validation ?
call validate(item_scope)
“ (form_scope)
“ (reord_scope)
“ (block_scope)

93.what are :system_mode status ?
NORMAL Indicates that the form is currently in normal processing mode.
ENTER-QUERY Indicates that the form is currently in Enter Query mode.
QUERY Indicates that the form is currently in fetch processing mode, meaning that a query is currently being processed.

94.What are :system.form_staus ?
CHANGED Indicates that the form contains at least one block with a Changed record. The value of SYSTEM.FORM_STATUS becomes CHANGED only after at least one record in the form has been changed and the associated navigation unit has also changed.
NEW Indicates that the form contains only New records.
QUERY Indicates that a query is open. The form contains at least one block with QUERY records and no blocks with CHANGED records.

95.what are :system.block_status ?
CHANGED Indicates that the block contains at least one Changed record.
NEW Indicates that the block contains only New records.
QUERY Indicates that the block contains only Valid records that have been retrieved from the database.

96. what are :system.record_status ?
CHANGED Indicates that a queried record’s validation status is Changed.
INSERT Indicates that the record’s validation status is Changed and that the record does not exist in the database.
NEW Indicates that the record’s validation status is New.
QUERY Indicates that the record’s validation status is Valid and that it was retrieved from the database.

97.what are all system variables


98. How to create block based on from clause ?
select query data source type property to FROM clause query and in query data source name property write your SQL statements

99.How to pass instructions to a form ? (fin)

eg. Take 2 forms order and catalog
in the order form create global.part_no and also create global.when_form_navigate and set that to query_part_no and in catalog create user_named trigger query_part_no which will get fired when cursor moves to the called form so call execute query here and write pre_query.

100.What is the diff between :system.cursor_item and :system.trigger_item

SYSTEM.CURSOR_ITEM represents the name of the block and item, block.item, where the input focus (cursor) is located.
Within a given trigger, the value of SYSTEM.CURSOR_ITEM changes when navigation takes place. This differs from SYSTEM.TRIGGER_ITEM, which remains the same from the beginning to the end of single trigger.
Assume that you want to create a user-defined procedure that takes the value of the item where the cursor is located (represented by SYSTEM.CURSOR_VALUE), then multiplies the value by a constant, and then reads the modified value into the same item. The following user-defined procedure uses the COPY built-in to perform this function.

new_value NUMBER;
new_value := TO_NUMBER(:System.Cursor_Value) * .06;
Copy(TO_CHAR(new_value), :System.Cursor_Item);

SYSTEM.TRIGGER_ITEM represents the item (BLOCK.ITEM) in the scope for which the trigger is currently firing. When referenced in a key trigger, it represents the item where the cursor was located when the trigger began. The value is always a character string.
SYSTEM.TRIGGER_ITEM remains the same from the beginning to the end of given trigger. This differs from SYSTEM.CURSOR_ITEM, which may change within a given trigger when navigation takes place.
Assume that you want to write a user-defined procedure that navigates to the item where the cursor was when the current trigger initially fired. The following statement performs this function.


101. How to trap error and message codes and text ?
Using error_code ,error_text ,message_code and message_text build –ins,

102.Query array size ?
If it is 0 then array size is same as the no of records displayed.

103.No of records buffered ?
If 0 means the no of records in the block that are held in memory is equal to the no of records displayed plus three

104. Query all records ?
Usually set to No . thismeans that the block will initially query only the no of rows set in the query array size property .this we may need to set to Yes to calculate the summary val.

Note1. . Call_form is unrestricted procedure where as open_form,new_form are restricted.
Note2 .Call_form , if form A calls form B then both are using the same database connection so it is not possible to commit each seperatly ,in that case post the changes in B and then commit in A.
Note3. New_form will exit form A and enters B
Note4.open_form allows you to open more than one form also let you to open another db session , so you can commit seperatly
Open_form options:
NO_SESSION (The default.) Specifies that the opened form should share the same database session as the current form. POST and COMMIT operations in any form will cause posting, validation, and commit processing to occur for all forms running in the same session.

SESSION Specifies that a new, separate db connection

105.What are all master-detail relations ?
They are
Detail Block Enter the name of a block to be related to the master block, or click Select for a list of available blocks from which to choose. The Detail block must already exist before you can create a new relation to it.
Master Deletes Determines what occurs when a record in the master block is deleted. Set one of the following:
Cascading: Allows master record to be deleted and automatically deletes associated detail records upon commit. Only records in the immediate detail block are deleted.
Isolated: Allows master record to be deleted, but does not effect the associated detail records.
Non-isolated: Prevents the master record from being deleted if there are associated detail records.
Coordination Deferred: Detail records are not automatically fetched. The user must navigate to the detail block and explicitly execute a query
Auto-Query: Detail records are fetched when the user navigates to the associated detail block. Part of the Deferred setting.
Prevent Masterless Operation: Prevents inserting or querying records in the detail block when there is no associated master record.
Join Condition Enter a valid join condition in the multi-line field. The join condition defines the relationship between the master block specified in the Master text box and the detail block specified in the Detail text box. See Specifying the join condition for a master-detail relation.
Example: warehouse.region_id =
Object REF Specifies a join condition based on an object which exists on both the master block and the detail block. Select an object from the drop-down box.