MODEL WINDOW
---------------------
--IF IT IS ACTIVE,NAVIGATION NOT POSSIBLE TO ANY OTHER WINDOW
#IT ALWAYS NEESD RESPONSE
MODELESS WINDOW--default
--generally
used
------------------------
--IF IT IS ACTIVE,NAVIGATION POSSIBLE TO ANY OTHER WINDOW
CONTENT CANVAS
-----------------------
--ONLY ONE CONTENT CANVAS CAN BE DISPLAYED AT RUN TIME ON ONE APPL WINDOW AT A TIME
WHY?
--CONTENT CANVAS
OCCUPIES THE WHOLE AREA OF
APPLICATION WINDOW
STACKED CANVAS
-----------------------
--MORE THAN ONE STACKED CANVAS CAN BE DISPLAYED AT RUN TIME ON ONE APPL
WINDOW AT SAME TINE
HOW?
CONDITIONAL QUERY
--by using default menu
---------------------------------
--CLICK ON ENTER(QUERY)
--ENTER THE COND
VALUE INTO THE ITEM
--CLICK THE
EXECUTE(QUERY)
COMPLEX QUERY COND
----------------------------
--CLICK ON ENTER(QUERY)
--ENTER THE BIND
VARIABLE IN ANY ITEM
--CLICK ON
EXECUTE
# IT OPEN A
QUERY/WHERE WINDOW
--WRITE THE
QUERY COND
IN THE
WINDOW AS REQUIREMENT
--------------------------------------A--
DESIGNING AN APPLICATION BASED ON
CONTROL BLOCK
-----------------------------------------------
--CREATE CONTROL BLOCK(manually)
--CREATE A CANVAS
--PLACE AT LEAST
ONE USER INTERACTIVE ITEM ON CANVAS
--go to item
property
--go to
physical section
--go to
canvas
--select the canvas name
# TABLE NAME & BLOCK NAME MAY BE
--SAME OR
--DIFFERENT
CONTROL BLK ----->DATA BLK
-----------------------------------
--GO TO CONTROL BLK PROPERTY
--GO TO DATABASE
SECTION
* DATABASE
BLOCK=YES --default
* Query data
source type=table --default
* Query data
source name=<tbl_name> emp
DATA BLK ----->CONTROL BLK
* Query data source name=<no any table name>
--------------------------------------------------
HOW TO CREATE GUI ITEM
-------------------------------
* LIST ITEM
* RADIO
BUTTON
* CHECK BOX
-----------------------------------------------------------
* LIST ITEM
----------------
TYPE OF LIST ITEM
---------------------
1. POPULIST
2. TLIST
3. COMBO
BOX
CREATE TABLE SUPPL
(
ID NUMBER(4),
NAME VARCHAR2(10),
SEX VARCHAR2(1),
CATEGORY VARCHAR2(1),
LOCAL VARCHAR2(1),
COUNTRY VARCHAR2(1),
FOREIGN VARCHAR2(1),
TAX_TYPE VARCHAR2(3)
);
# WHEN WE DELETE THE ITEM FROM CANVAS ,THAT ALSO DELETED FROM BLOCK
1. POPULIST
--------------------
--CREATE A POPULIST LIST ITEM
--DEFINE FOR LIST ITEM
1.
ELEMENTS &
2. VALUE
ELEMENTS
--VISIBLE TO USER FOR SELECTION AT RUN TIME
VALUE
--FOR SELECTED ELEMENTS,THIS VALUE GOES TO
COLUMN OF TABLE
AFTER COMMIT
# ELEMENT & VALUE MAY BE
--SAME OR
--DIFFERENT
depending on requirement
stps
---------
GO TO LIST ITEM PROPERTY
--CLICK ON
ELEMENTS
IN LIST
--DEFINE
* ELEMENT
&
* VALUES
--DEFAULT VALUE FOR LIST ITEM
-----------------------------------------
--GO TO LIST ITEM PROPERTY
--GO TO DATA SECTION
--GO TO INITIAL
VALUE=S
$$DATE$$
--------------------------------
TLIST
------
--SCROLL BAR VISIBLE AT RUN TIME,NOT AT DESIGN TIME
--IT IS VISIBLE IF
ALL ELEMENTS NOT DISPLAYED IN TLIST
AT RUN TIME
--DEFINE
--ELEMENTS
--VALUES
--GO TO TLIST PROPERTY
--CLICK ON
ELEMENTS IN LIST
#THE SELECT ELEMENT FROM TLIST ALWAYS ACTIVATED
RADIO BUTTON
------------------------
--CREATE RD GRP
--CREATE RD BUTTON
--DEFINE THE VALUE FOR RD BUTTON
--GO TO RD BUTN
PROPERTY
--RADIO BUTTON
VALUE=M/F
--DEFINE THE INITIAL VALUE FOR
RADIO GROUP
--------------------------------
CHECK BOX
---------------
--CREATE CHK BOX
--DEFINE THE VALUE FOR
* WHEN
CHECK BOX CHECKED
*
WHEN CHECK BOX UNCHECKED
--any one is mandatory
--go
to chk box propertry
# HOW TO REMOVE ANY ITEM FROM CANVAS
WHICH SHOULD BE AT
OBJ NVG
--SEND THE ITEM TO PRE-DEFINED CANVAS
<NULL>
HOW TO MAKE AN ITEM
NON-INTERACTIVE
------------------------------------------
--DISPLAY
ITEM OR
--only for text item
--ENABLED=YES/NO --select NO
--default YES
for
text_item
GUI ITEM
-----------------------------------------------------
LOV--list of values
------
-- IT IS A DATA STRUCTURE LIKE A TBALE
--IT GET DATA FROM
RECORD
GROUP
#RECORD GROUP
--IT IS ALSO A DATA STRUCTURE LIKE A TABLE
--IT POPULATE DATA TO
--LOV
--LIST_ITEM
--RGP CAN ALSO BE USED AS
PARAMETER
FOR
--REPORTS
OR
--GRAPHICS
to pass a
bunch of values at a time
TYPE OF RECORD GROUP
---------------------------
1.
QUERY-BASED RGP
2.
NON-QUERY BASED RGP
3. STATIC
RGP
1. QUERY-BASED RGP
------------------------
-- A QUERY IS ASSOCIATED TO THE RGP
--IT IS DYNAMIC
--IT CAN BE CREATED AT
# DESIGN
TIME--object navigator
# RUN TIME
--using program
--it is generally used
2. NON-QUERY BASED RGP
--------------------------------
--NO QUERY ASSOCIATED TO THE RGP
--IT MAY BE
*
DYNAMIC OR
* STATIC
--IT CAN BE CREATED AT
# RUN TIME
ONLY
# DESIGN
TIME --not allowed
3. STATIC RGP
---------------
--NO QUERY ASSOCIATED WITH RGP
--IT IS ALWAYS
* STATIC
--IT CAN BE CREATED AT
# DESGIN
TIME ONLY
# RUN TIME
--not allowed
NOTE
--------
--A LOV CAN BE ATTACHED TO ONLY ONE RGP AT A TIME
--AT RUN TIME,WE CAN ATTACH SAME LOV TO DIFFERENT RGP BUT AT A TIME TO ONLY
ONE RGP
--MORE THAN ONE LOV CAN BE ATTACHED TO SAME RGP
--RGP & LOV CAN BE CREATED SEPARATELY AND WILL BE ATTACHED TOGETHER
--LOV CAN BE CREATED BY
*
WIZARD--generally used
* MANUALLY
# WHEN WE CREATE LOV THROUGH WIZARD
AND BASED ON
QUERY,automatically a RGP created and attached to the LOV
--this technique is
generally used
USE OF LOV
------------
1. HELP BOX
2.
ASSIGNMENT
3.
VALIDATION
------------------------------------------------
HOW TO CREATE A LOV
WIZARD(based on query)
---------------------------------------------
--DB CLICK ON LOV AT OBJ NVG
--SELECT (based on
query)
--WRITE THE RGP
QUERY
SELECT *
FROM DEPT
--ATTACH LOV TO ITEM
--GO TO ITEM
PROPERTY
--GO TO LOV
SECTION
--SELECT THE
LOV NAME
HOW TO INVOKE LOV WHICH
IS ATTACHED TO ITEM
PRESS F9 when control
on the item
--to customise the look of lov
--go to lov
property
--design as
requirement
FONT
COLOR
HOW TO DO ASSIGNMENT
------------------------------
--GO TO PROPERTY OF LOV
--GO TO COLUMN
MAPPING PROPERTIES
--DEFINE THE
# RETURN
ITEM VALUE
<BLK_NAME>.<ITEM_NAME>
EMP.DEPTNO
OR
--click on
browse &
select the
item name from list
HOW TO DO VALIDATION
------------------------------
--GO TO ITEM PROPERTY(LOV ATTACHED)
--GO TO LOV SECTION
--VALIDATE FROM
LIST=YES
-------------------------------
SEARCHING TECHNIQUE IN LOV
--------------------------------------
1.
FIND method
2. PANEL
method
----------------------------------------
# CREATING
RECORD GROUP
&
LOV
SEPARATELY
AND ATTACH THEM
TOGATHER
---------------------------------------
--DB CLICK ON RGP AT OBJ NVG
* STATIC
* BASED ON
QUERY --click on it
--WRITE THE QUERY
--DB CLICK ON LOV
* WIZARD
# based on query
# existing record group
* MANUALLY
--select any one
* MANUALLY
--GO TO LOV PROPERTY
--CLICK ON COLUMN
MAPPING
--DEFINE THE LOV
COLUMNS BASED ON
RECORD GROUP
#attaching the lov to rgp
--CLICK ON RECORD GROUP(LOV PROPERTY)
--SELECT THE RGP
NAME
-----------------------------------------
STATIC RGP
--DB CLICK ON RGP
--CLICK ON * STATIC
--DEFINE
# RGP
COLUMN/datatype &
# RGP
COLUMN VALUE
NOTE
---
WE CAN POPULATE LIST ITEM DYNAMICALLY
AT RUN TIME BASED ON DATABASE
--by using program
---------------------------------------------
HOW TO USE TAB CANVAS
--------------------------------
HOW TO DESIGN
MASTER/DETAIL
FORM
-----------------------------------------------
REQUISITION FORM
PURCHASE
ORDER FORM
RECEIVING FORM
INVOICE
----------------------------------------------
IMPLEMENTATION OF
MASTER/DETAIL FORM
------------------------------
# CREATE MASTER FORM
--based on pk
table
# CREATE DETAIL FORM
--based on fk
table
TYPE OF BLOCK
--based on no of records dispalyed
---------------------------------------
1. SINGLE
RECORD BLOCK
--only one recd dispalyed
2.
MULTI-RECORD BLOCK
--more than one recd displayed
---------------------------------------------------
nxt class
--CREATING RELATION B/W
MASTER/DTL BLOCKS
-----------------------------------------------
# EACH BLOCK HAVING ITS OWN RELATION NODE AT OBJECT NVG
--WE CAN CREATE RELATION BY USING THE
RELATION
NODE
--used when both blocks have been created
# USE relation node of master block
--DB CLICK ON RELATION NODE OF MASTER BLOCK AT OBJ NVG
--CLICK ON SELECT
button
--SELECT THE
DETAIL BLOCK NAME
--WRITE
THE JOIN-CONDITION
in-side the join-cond window
<blkm_name>.<commn_item>=
<blkd_name>.<commn_item>
EMP.DEPTNO=DEPT.DEPTNO
click
on ok button
---------------------------------------------------
# WHEN WE CREATE
RELATION,AUTOMATICALLY
FORM
TRIGGERS &
PROGRAM UNITS(procedures)
created to maintain the data integrity b/w master & detail block
HOW MANY FORM TRIGGERS & PROGRAM UNITS?
------------------------------------------------
FORM TRIGGERS=03
trg levels
-----------
1. form
level =01 trigger
ON-CLEAR-DETAILS
2. master block
level=02 triggers
ON-POPULATE-DETAILS
ON-CHECK-DELETE-MASTER
PROGRAM UNITS=03
*
Check_Package_Failure
*Clear_All_Master_Details
*Query_Master_Details
Relation Name
------------------
<mst_blok>_<dtl_blk>
--it can be changed
EMP.DEPTNO=DEPT.DEPTNO
MASTER DELETE COMDITIONS
--------------------------------------
1.
CASCADING
2. ISOLATED
3.
NON-ISOLATED --default
1. CASCADING
--WHEN WE DELETE MASTER
DATA ,AUTOMATICALLY
CHILD DATA ALSO DELETED
--PRE-DELETE
2. ISOLATED
--WHEN WE DELETE MASTER DATA,
NO EFFECT ON CHILD
DATA
3. NON-ISOLATED --default
--WE CAN NOT DELETE MASTER DATA IF ANY CHILD DATA EXISTS
--1st delete child
data then
delete master
data
--------------------------------------------------
COORDINATION PROPERTY
-------------------------------
--IT CONTROL THE QUERY BEHAVIOUR OF DETAIL BLOCK WHEN WE DO QUERY AT MASTER BLOCK
TYPE
------
1. AUTO-QUERY --default
2. DEFERRED
1. AUTO-QUERY --default
--when master data retrieved,immediately child data also retrieved
2. DEFERRED
--child data not
displayed immediately
along with
master data
type
-----
1. deferred
with auto-query
2. deferred
without auto-query
1. deferred with auto-query
--when control goes to detail block,immediately child data displayed
2. deferred without
auto-query
--we have to do separate query
for child data
PREVENT MASTERLESS OPERATION
CHECKED
UNCHECKED --default
--------------end---------------------------
# COMBINATION BLOCK
# SUMMARY BLOCK --6i
----------------------------------------
--for salcomm
------------------------
--GO TO PROPERTY OF SALCOMM
--GO TO CALCULATION
SECTION
--CALCULATION
MODE=FORMULA
--CLICK ON
FORMULA
--WRITE
THE PRGM
:SAL+NVL(:COMM,0)
--for sum(sal)
-------------------
--go to property of sumsal
--go to calculation
section
--calculation
mode=summary
*summary
function=sum
*summarized
block=emp
*summarized
item=sal
--go to block property
--go to records
section
--query all
records=yes
------------------------------------
PROGRAMMING IN D2K
-----------------------------
--BY USING
* FORM
TRIGGERS
* FORM
BUILT-INS
WITH
PL/SQL BLOCK
FORM TRIGGERS
--------------------
--IT IS A PL/SQL BLOCK ASSOCIATED WITH ANY EVENT
--IT IS FIRED WHEN EVENT OCCURED
--IT IS USED FOR
--DATA
PROCESSING
--VALIDATION
--PASSING
PARAMETER
--FORM BUILDER HAVING ITS OWN EVENTS
TYPE OF EVENTS
------------------
1. EXTERNAL
EVENTS
--done by user
2. INTERNAL
EVENTS
--due to navigation
COMPONENT OF FORM TRIGGERS
---------------------------------------
*
TYPE--pre-defined
* SCOPE--pre-defined
*
CODE--user written progm
nxt class
TYPE
-------
PRE-
POST-
WHEN-
ON-
KEY-
-------------------
PRE-
--IT IS FIRED JUST BEFORE THE EVENT TAKE PLACE
PRE-FORM
PRE-BLOCK
PRE-RECORD
PRE-TEXT-ITEM
POST-
--IT IS FIRED JUST AFTER THE EVENT TAKE PLACE
POST-FORM
POST-BLOCK
POST-RECORD
POST-TEXT-ITEM
WHEN-
--IT IS FIRED JUST AFETR ALL DEFAULT PROCESSING
OVER
--it is fired when
the control focused to the form
object
--generally used for
initialization
WHEN-NEW-FORM-INSTANCE
WHEN-NEW-BLOCK-INSTANCE
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE
ON-
--IT IS USED TO REPLACE THE DEFAULT PROCESEE
IN CASE OF DML
operation
--generally used for
non-base table
ON-INSERT
ON-DELETE
ON-UPDATE
KEY-
--SOME FORM TRIGGERS ARE ASSOCIATED TO THE SPECIFIC KEY
--IF THE KEY IS PRESSED,THE TRIGGER IS FIRED
KEY-NEXT-ITEM
when we press(ENTER/TAB)
KEY-UP
KEY-DOWN
etc
#
function key
F1/F2/F3--
---------------------------------------------
When-Clear-Block
When-Create-Record
When-Database-Record
When-Remove-Record
BIND VARIABLE OF D2K
----------------------------------
--A VARIABLE DEFINED IN HOST ENVIRONMENT IS KNOWN AS BIND VARIABLE
--IT USES : AS PREFIX
--IT CAN HOLD ONLY ONE VALUE AT A TIME
TYPE OF BIND VARIABLE USED IN D2K
------------------------------------------------
1. ITEM
VARIABLE
2. GLOBAL
VARIABLE
3.
PARAMETER VARIABLE
4. SYSTEM
VARIABLE
--------------------------------------------------------
1. ITEM VARIABLE
--ITEM CAN BE USED AS VARIABLE IN PL/SQL BLOCK
:<BLOCK_NAME>.<ITEM_NAME>
:EMP.EMPNO
--block name is
not mandatory
2. GLOBAL VARIABLE
--IT IS USED TO PASS/RECEIVE VALUE FROM
FORM TO
FORM
FORM TO
REPORTS
FORM TO
GRAPHICS
--DATATYPE=CHAR(255)
--IT MUST BE INITIALIZED
--its value can be
changed during execution
--it is open till session
--it uses a keyword
GLOBAL
--IT CAN BE DEFINED AT ANY LEVEL
F/B/I
WHEN-NEW-FORM-INSTANCE
WHEN-NEW-BLOCK-INSTANCE
:GLOBAL.<VAR_NAME>:=' ';
:GLOBAL.DNO:=' ';
--recomendation to avoid it if not required
3. PARAMETER VARIABLE
--it is also used to pass value
FORM TO
FORM
FORM TO
REPORTS
FORM TO
GRAPHICS
--DATATYPE=NUMBER/DATE/CHAR
--INITIALIZTION IS NOT MANDATORY
--NOT OPEN TILL SESSION
--IT USES A KEYWORD
PARAMETER
--IT IS DEFINED AT DESIGN TIME AT OBJECT NAVIGATOR
:PARAMETER.<VAR_NAME>
:PARAMETER.PDNO:=10;
--recomendation to use in place
of GLOBAL variable
4. SYSTEM VARIABLE
--IT IS PRE-DEFINED VARIABLE
--USED BY FORM BUILDER TO KEEP THE STATUS OF FORM AT RUN TIME
--WE CAN NOT DO
--DML
operation on system variable
--we can use the value of system variable
--exception
#some
system variable can be changed by user
*
which system variable can be changed
by user????
1.
---
2.
---
--IT USES A KEYWORD
SYSTEM
:SYSTEM.<VAR_NAME>
:SYSTEM.BLOCK_STATUS
NEW
CHANGED
QUERY
--DATATYPE=CHAR
--VALUE IN UPPER CASE
----------------------------------------------
AN INITIALIZED VARIABLE WHICH VALUE NEVER CHANGES DURING THE
EXECUTION
BUILT-INS USED IN D2K
-----------------------------
--IT IS PRE-DEFINED NAMED PL/SQL BLOCK
AS A PART OF D2K
--THEY ARE CATEGORISED IN TWO GROUPS
#
PROCEDURE OR
# FUNCTIONS
--FORM BUILT-INS ARE KEPT IN D2K BUILT-IN PACAKGE
STANDARD
EXTENSIONS --pkg name
note
------
form
builder having other packages also which
is used for special task
--for
example
TEXT_IO --used for data migration
FTREE --used for hierarchical
data dispaly
etc
TYPE OF BUILT-INS
----------------------
*
RESTRICTED BUILT-INS
*
UNRESTRICTED BUILT-INS
* RESTRICTED BUILT-INS
---------------------------------
--SUCH BUILT-INS NOT ALLOWED TO ALL TRIGGERS
--HOW TO KNOW?
-----------------------
--THE BUILT-INS WHICH INITIATE THE NAVIGATION
ARE KNOWN AS
restricted
built-ins
GO_BLOCK();
NEXT_ITEM
NEXT_RECORD
* UNRESTRICTED BUILT-INS
--SUCH BUILT-INS
ALLOWED TO ALL TRIGGERS
MESSAGE();
------------------------------------------------------------
LIST OF USEFUL BUILT-INS
--------------------------------
DML operation
-----------------
COMMIT_FORM;
--just like commit;
CLEAR_BLOCK(DO_COMMIT);
NO_COMMIT
CLEAR_BLOCK;
EXIT_FORM(DO_COMMIT);
NO_COMMIT
ASK_COMMIT
CLEAR_FORM(DO_COMMIT);
NO_COMMIT
ASK_COMMIT
CLEAR_FORM;
DELETE_RECORD;
COMMIT;
UPDATE_RECORD;
--not allowed at item level
--allowed
only to
form/block level
COMMIT;
NAVIGATIONAL BUILT-INS
---------------------------------
GO_BLOCK(<'BLK_NAME'>);
NEXT_BLOCK;
FIRST_RECORD;
LAST_RECORD;
PREVIOUS_RECORD;
NEXT_RECORD;
GO_RECORD(<REC_NO>);
GO_ITEM(<'BLK_NAME.ITEM_NAME'>);
NEXT_ITEM;
GO_FORM(<'FORM_NAME'>);
NEXT_FORM;
OTHER purpose built-ins
-----------------------------
EXECUTE_QUERY;
MESSAGE(<'MSG STRING'>);
SHOW_LOV(<'LOV_NAME'>);
LIST_VALUES; --used
to invoke LOV if lov attached to the
item
SHOW_EDITOR(....);
EDIT_TEXTITEM;--used to invoke EDITOR if that is attached to the item
SHOW_VIEW(<'STACKED_CANVAS_NAME'>);
HIDE_VIEW(<'STACKED_CANVAS_NAME'>);
SHOW_ALERT(<'ALERT_NAME'>);
SET_<OBJECT>_PROPERTY(...)
--used to change the object property at run time
SET_BLOCK_PROPERTY();
SET_ITEM_PROPERTY();
SET_LOV_PROPERTY();
SET_CANVAS_PROPERTY();
SET_WINDOW_PROPERTY();
etc
GET_<OBJECT>_PROPERTY(...)
--used to get existing property of object at run time
GET_APPLICATION_PROPERTY() --it is function
USERNAME
PASSWORD
CONNECT_STRING
add_list_elements()
---------------------------------
POST;
NAME_IN();
COPY()
---------------------------------------------------------
programmimn in d2k
-----------------------
HOW TO USE
ITEM
VARIABLE
GLOBAL
VARIABLE
PARAMETER
SYSTEM
VARIABLE
-------------------------------------
smart triggers
------------------
--IT IS A COLLECTION OF FREQUENTLY USED TRIGGERS W.R.T. THE
OBJECT WHERE CURRENTLY CONTROL EXISTS
POST-TEXT-ITEM(ENAME)
-----------------------------
:EMP.ENAME:=UPPER(:EMP.ENAME);
GLOBAL VARIABLE
---------------------
WHEN-NEW-FORM-INSTANCE
:global.pdno:=' ';
GO_BLOCK('DEPT');
PRE-TEXT-ITEM(DEPTNO OF DEPT BLOCK)
:DEPT.DEPTNO:=:GLOBAL.PDNO;
W.N.B.I(DEPT)
:DEPT.DEPTNO:=:GLOBAL.PDNO;
--SENDING VALUE FROM ITEM TO ITEM
GO_BLOCK('DEPT');
:DEPT.DEPTNO:=:EMP.DEPTNO;
PARAMETER
---------------
--CREATE A PARAMETER AT OBJECT NVG
:PARAMETER.PDNO:=:EMP.DEPTNO;
GO_BLOCK('DEPT');
W.N.B.I(DEPT)
:DEPT.DEPTNO:=:PARAMETER.PDNO;
SYSTEM VARIABLE
---------------------
ITS VALUE ALWAYS IN UPPER CASE
----------------------------------
W.B.P(SAVE)
------------------
IF :SYSTEM.BLOCK_STATUS='CHANGED' THEN
COMMIT_FORM;
ELSE
MESSAGE('NO DATA TO SAVE
'|| :SYSTEM.BLOCK_STATUS);
MESSAGE('NO DATA TO SAVE
'|| :SYSTEM.BLOCK_STATUS);
END IF;
--------------------------------
------------------------
UPDATE_RECORD;
DELETE_RECORD;
------------------------------
:EMP.SYSVAR:=:SYSTEM.BLOCK_STATUS;
INVOKING LOV
-----------------
SHOW_LOV
--function
--return BOOLEAN
SHOW_LOV(<'LOV_NAME'>);
DECLARE
VLOV BOOLEAN;
BEGIN
VLOV:=SHOW_LOV('LOVDNO');
IF VLOV THEN
SELECT COUNT(*) INTO :EMP.CNT
FROM EMP
WHERE DEPTNO=:EMP.DEPTNO;
ELSE
MESSAGE('NO SELECTION FROM LOV');
MESSAGE('NO SELECTION FROM LOV');
END IF;
END;
clear_block(no_commit);
LIST_VALUES;
if :emp.deptno is not null then
SELECT COUNT(*) INTO :EMP.CNT
FROM EMP
WHERE DEPTNO=:EMP.DEPTNO;
else
MESSAGE('NO SELECTION FROM LOV');
MESSAGE('NO SELECTION FROM LOV');
end if;
--lov must be attached to item
CLEAR_ITEM;
INVOKE SAME LOV
TO TWO DIFFERNT BLOCK
WITH ASSIGNMENT
------------------
NXT CLASS
DECLARE
VLOV BOOLEAN;
BEGIN
VLOV:=SHOW_LOV('LOVDNO');
:EMP.DEPTNO:=:PARAMETER.PDNO;
END;
-----------
--CREATE LOV
--CREATE A PARAMETER=PDNO
--COLUMN MAPPIMNG properties(LOV PROPERTY)
--RETURN ITEM=PARAMETER.PDNO
DECLARE
VLOV BOOLEAN;
BEGIN
VLOV:=SHOW_LOV('LOVDNO');
:DEPT.DEPTNO:=:PARAMETER.PDNO;
END;
----------------------------------------------
display the message at run time
------------------------------------
--by using
#
built-ins=MESSAGE()
--used for non-decision making message
# form
object=ALERT
--used for decision making message
ALERT
--------
--it is a form object
--used for decision making message
--it has 03 buttons
1.
ALERT_BUTTON1 OK --default
2.
ALERT_BUTTON2 CANCEL
3.
ALERT_BUTTON3 <user_label>
--IT HAS 03 STYLES(GRAPHICS)
* NOTE
* CAUTION
* STOP
--default
built-in used to invoke ALERT
SHOW_ALERT()
--function
--return number value
STPS
-------
--DB CLICK ON ALERT AT OBJ NVG
--DEFINE
# TITLE
--optional
# MESSAGE
--CALL TO FORM AT RUN TIME
--GO TO ALERT PROPERTY
--TITLE=......DELETION.........
--MESSAGE=DO YOU
WANT TO DELETE..?
W.B.P(DELETE)
-------------------
DECLARE
VALT NUMBER;
BEGIN
VALT:=SHOW_ALERT('ALT1');
IF VALT=ALERT_BUTTON1 THEN
DELETE_RECORD;
---COMMIT;
ELSIF
VALT=ALERT_BUTTON2 THEN
MESSAGE('deletion canceled');
MESSAGE('deletion canceled');
else
MESSAGE('NO DELETION');
MESSAGE('NO DELETION');
END IF;
END;
HOW TO USE SAME ALERT FOR
DIFFENT ACTION
----------------------------------
--by changing Message/Title at run time
SET_ALERT_PROPERTY()
--------------------------------------------------
DECLARE
VALT NUMBER;
BEGIN
------------defining message/TITLE---------
SET_ALERT_PROPERTY('ALT1',
TITLE,
'....DELETION....');
SET_ALERT_PROPERTY('ALT1',
ALERT_MESSAGE_TEXT,
'DO YOU WANT TO DELETE?');
-----------------------------------------------------
VALT:=SHOW_ALERT('ALT1');
IF VALT=ALERT_BUTTON1 THEN
DELETE_RECORD;
---COMMIT;
ELSIF
VALT=ALERT_BUTTON2 THEN
MESSAGE('deletion canceled');
MESSAGE('deletion canceled');
else
MESSAGE('NO DELETION');
MESSAGE('NO DELETION');
END IF;
END;
W.B.P(SAVE)
----------------
DECLARE
VALT NUMBER;
BEGIN
------------defining message/TITLE---------
SET_ALERT_PROPERTY('ALT1',
TITLE,
'....INSERT....');
SET_ALERT_PROPERTY('ALT1',
ALERT_MESSAGE_TEXT,
'DO YOU
WANT TO SAVE?');
-----------------------------------------------------
VALT:=SHOW_ALERT('ALT1');
IF VALT=ALERT_BUTTON1 THEN
COMMIT_FORM;
ELSIF
VALT=ALERT_BUTTON2 THEN
MESSAGE('INSERT canceled');
MESSAGE('INSERT canceled');
else
MESSAGE('NO INSERT');
MESSAGE('NO INSERT');
END IF;
END;
-----------------------------------------------
HOW TO POPULATE LIST ITEM DYNAMICALLY
-----------------------------------------------------
--by using special built-ins
#
CREATE_GROUP_FROM_QUERY--function
#
POPULATE_GROUP --function
#
POPULATE_LIST
#
DELETE_GROUP--OPTIONAL
--DATATYPE=RECORDGROUP
----------------------------------------------------
DECLARE
RG_ID RECORDGROUP;
STATUS NUMBER;
BEGIN
RG_ID:=CREATE_GROUP_FROM_QUERY('RGP1',
'SELECT
DISTINCT JOB,JOB FROM EMP');
STATUS:=POPULATE_GROUP(RG_ID);
POPULATE_LIST('JOB',RG_ID);
DELETE_GROUP(RG_ID);
END;
-----------------------------------------------------
EDITOR
-------------
--system defined editor =SYSTEM_EDITOR
--user-defined editor
------------------------------------
SYSTEM_EDITOR
--GO TO ITEM PROPERTY
--GO TO EDITOR
SECTION
--SELECT THE
EDITOR=SYSTEM_EDITOR
CTRL+e --to invoke
editor
user-defined editor
--DB CLICK ON EDITOR AT OBJ NVG
--CUSTOMIZE THE
EDITOR if required
DECLARE
OK BOOLEAN;
BEGIN
SHOW_EDITOR('SYSTEM_EDITOR',
:EMP.RMK,:EMP.RMK,OK);
END;
EDIT_TEXTITEM;
--editor must be attached to the item
QUERY PROCESSING
-------------------------
EXIT --EXIT_FORM;
REFRESH
---CLEAR_BLOCK(NO_COMMIT);
QUERY EXECUTE_QUERY;
--------------------------------
EXECUTE_QUERY
--built-in for query
--it clear the block before fetching data
--it is used as unconditional query
HOW TO DO CONDITIONAL QUERY
-----------------------------------------
--EXECUTE_QUERY does not accept query condition from query block
--for conditional query we can use following methods
methods
----------
1. CONTROL
BLOCK method
2. GLOBAL
variable method
3.
SET_BLOCK_PROPERTY() method
4. SELECT
statement method
5.
ENTER_QUERY (built-in) method
---------------------------------------------------------
1. CONTROL BLOCK method
-------------------------------
--create a control block for query condition
--create items as
requirement
--place the item on query block canvas
--go to item property(EMPNO)
--go to data
section
COPY VALUE FROM ITEM=QRY1.PNO
2. GLOBAL variable method
--------------------------------
--EXECUTE_QUERY always search the query condition at query block property at run
time
WHERE CLAUSE --block propertry name
W.N.F.I
:GLOBAL.PNO:=' ';
W.B.P(QUERY)
----------------
:GLOBAL.PNO:=:EMP.EMPNO;
CLEAR_BLOCK(NO_COMMIT);
EXECUTE_QUERY;
--GO TO BLOCK PROPERTY(EMP)
--GO TO DATABASE
SECTION
WHERE
CLAUSE EMPNO=:GLOBAL.PNO
3. SET_BLOCK_PROPERTY() method
--generally used
W.B.P(QUERY)
----------------
SET_BLOCK_PROPERTY('EMP',
DEFAULT_WHERE,
'EMPNO='||:EMP.EMPNO);
CLEAR_BLOCK(NO_COMMIT);
EXECUTE_QUERY;
SET_BLOCK_PROPERTY('EMP',
DEFAULT_WHERE,
'JOB LIKE
='''||:EMP.JOB||'''||'%' ||'AND '|| 'SAL='||:EMP.SAL||'''');
4. SELECT statement method
--------------------------------------
W.B.P(QUERY)
-------------------------
SELECT EMPNO,ENAME,JOB,DEPTNO
INTO
:EMP.EMPNO,:EMP.ENAME,
:EMP.JOB,:EMP.DEPTNO
FROM EMP
WHERE EMPNO=:EMP.EMPNO;
# DATA DISPLAYED IN THE FORM BY USING THE SELECT STATEMENT IS ALWAYS IN INSERT STATUS
SELECT statement method
is used for
# control
block or
# control
item on data block
--generally used for reference value
POST-QUERY(EMP BLOCK LEVEL)
--------------------------------------------
SELECT DNAME INTO :EMP.DNAME
FROM DEPT
WHERE DEPTNO=:EMP.DEPTNO;
5. ENTER_QUERY (built-in) method
----------------------------------------------
ENTER_QUERY changes the form from
NORMAL
MODE---->QUERY MODE
# ENTER_QUERY & EXECUTE_QUERY
CAN BE USED
TOGATHER
--------------------------------------------------
MULTIPLE APPLICATIONS DESIGN
---------------------------------------
--IT IS A TECHNIQUE/MACHANISM TO DESIGN MORE THAN ONE APPLICATIONS IN SUCH WAYS WHEN 1ST
APPLICATION LOADED
INTO MEMOEY AREA,THAT CAN INVOKE OTHER
APPLICATIONS ALSO FROM ITS OWN
SESSION
--MEANS INVOKING OTHER APPLICATIONS FROM A SINGLE SESSION
# THE INVOKING APPLICATION IS KNOWN AS
CALLING
FORM
# THE INVOKED APPLICATION IS KNOWN AS
CALLED FORM
# IT IS POSSIBLE TO PASS VALUE FROM CALLING FORM TO CALLED FORM BY USING
* GLOBAL
VARIABLE
*
PARAMETERLIST --generally used
--FOR THIS WE USE FOLLOWING BUILT-INS
1.
CALL_FORM
2.
OPEN_FORM
3. NEW_FORM
--ALL
ARE DIFFERENT IN ACTIONS
1. CALL_FORM
----------------
--ONLY ONE FORM CAN BE CALLED
--CALLING FORM IS SUSPENDED
--NAVIGATION NOT POSSIBLE B/W CALLING FORM & CALLED FORM
--THE WINDOW BEHAVIOUR OF CALLED FORM BECOME AS
MODEL
WINDOW
--AFTER EXIT FROM CALLED FORM THE CONTROL GOES BACK TO CALLING FORM
2. OPEN_FORM
----------------
--MORE THAN ONE FORM CAN BE CALLED
--CALLING FORM
NOT SUSPENDED
--NAVIGATION
POSSIBLE B/W CALLING FORM &
CALLED FORM
--WINDOW
BEHAVIOUR OF CALLED FORM IS AS
MODELESS
WINDOW
--AFTER EXIT FROM CALLED FORM,THE CONTROL GOES BACK TO CALLING FORM
3. NEW_FORM
---------------
--ONLY ONE FORM CAN BE CALLED
--CALLING FORM IS EXIT OUT
# IF CALLING FORM IS INVOKED BY ANY HIGHER FORM THEN AFTER
EXIT FROM CALLED FORM THE CONTROL GOES TO THE HIGHER FORM
------------------------------------------------------
SYNTAX--CALL_FORM
---------
CALL_FORM(<called FORM_NAME>,
DISPLAY_MODE,
SWITCH_MENU_MODE,
QUERY_MODE,
PARAMETERLIST);
<FORM_NAME>
--mandatory argument
--others are optionals
* having
default values
--recomended to use all arguments
--parameterlist depends on
requirement
'D:\FORMB.FMX'
--generally used
--'D:\FORMB.FMB' --valid
--'D:\FORMB'--valid
DISPLAY_MODE
--calling form visible / not visusble
-----------------------------------
HIDE
--default
NO_HIDE
SWITCH_MENU_MODE
--which menu visible
calling
form/called form
-----------------------------
DO_REPLACE--menu
of called form visisble
NO_REPALCE--menu
of calling form visisble
--------------------------------------------------------
QUERY_MODE
--called form can be used for
DML/DQL
opertation both OR
DQL
operation only
----------------------------------------------------
QUERY_ONLY--only
DQL operation on called form
NO_QUERY_ONLY--both
DML/DQL on called form
--------------------------------------------------------
PARAMETERLIST
--used for passing the value from calling form to
called form
CALLING FORM
----VALUE---->CALLED FORM
# we have to write
parameterlist progarm by usimg
some special built-ins
EXAMPLE --call_form
-------------
CALL_FORM('D:\FORMB.FMX',
NO_HIDE,
NO_REPLACE,
NO_QUERY_ONLY);
SYNTAX--OPEN_FORM
---------
OPEN_FORM(<called FORM_NAME>,
ACTIVATE MODE,
SESSION MODE,
QUERY_MODE,
PARAMETERLIST);
-----------------------------------------------------
ACTIVATE MODE
--the control should be where
calling
form or
called form
ACTIVATE--control
on called form
NO_ACTIVATE--control
on calling form
---------------------------------------
SESSION MODE
--called form work on which database
-------------------------------------------------
SESSION
--called form using different
database
NO_SESSION--called
form using same database of calling form
example --open_form
----------------------------
OPEN_FORM('D:\FORMB.FMX',
ACTIVATE,
NO_SESSION,
NO_QUERY_ONLY);
W.N.F.I
SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,
WINDOW_STATE,
MAXIMIZE);
SET_WINDOW_PROPERTY('WINDOW1',
WINDOW_STATE,
MAXIMIZE);
SYNTAX--NEW_FORM
---------
NEW_FORM(<called FORM_NAME>,
ROLLBACK MODE,
QUERY_MODE,
PARAMETERLIST);
ROLLBACK MODE
--for unsaved data of calling form
---------------------------------------
TO_SAVEPOINT
--default
--generally used
NO_ROLLBACK
FULL_ROLLBACK
NEW_FORM('D:\FORMB.FMX',
TO_SAVEPOINT,
NO_QUERY_ONLY);
-----------------------------------------
HOW TO PASS PM VALUE TO CALLED FORM
----------------------------------------------------------
-by using parameterlist
PARAMETERLIST
--------------------
--IT IS A DATA
STRUCTURE TO PASS VALUE FROM
FORM TO
FORM
FORM TO REPORTS
FORM TO
GRAPHICS
COMPONENT OF PLIST
---------------------------
1. KEY
--name of plist
2.
TYPE--structure type
3. VALUE
--to be passed
2. TYPE--structure type
--------------------------
#
TEXT_PARAMETER
#
DATA_PARAMETER
# TEXT_PARAMETER--generally used
----------------------
--IT PASSES SINGLE VALUE AT A TIME
--ACCEPTS ONLY STRING VALUE TO PASS
--CAN BE USED FOR
FORM TO
FORM
FORM TO
REPORTS
FORM TO
GRAPHICS
# DATA_PARAMETER
-------------------------
--it can pass a bunch of values at a time by using recordgroup
--it can be used for
FORM TO
FORM --not allowed
FORM TO
REPORTS
FORM TO
GRAPHICS
---------------------------------------------------------
# FOR PARAMETERLIST PROGRAM WE USE FOLLOWING BUILT-INS
*
CREATE_PARAMETER_LIST
*
ADD_PARAMETER
*
DESTROY_PARAMETER_LIST --optional
--the pmlist created at run time works only once
--DATATYPE=PARAMLIST
W.B.P(CALL)
--FORMA(CALLING FORM)
-----------------------------------------------
DECLARE
PL_ID PARAMLIST;
BEGIN
PL_ID:=CREATE_PARAMETER_LIST('LISTA');
ADD_PARAMETER(PL_ID,
'PDNO',
TEXT_PARAMETER,
:EMP.DEPTNO);
ADD_PARAMETER(PL_ID,
'PNM',
TEXT_PARAMETER,
:EMP.ENAME);
CALL_FORM('D:\FORMB.FMX',
NO_HIDE,
NO_REPLACE,
NO_QUERY_ONLY,
PL_ID);
DESTROY_PARAMETER_LIST(PL_ID);
END;
W.N.B.I(FORMB)
--------------------
:DEPT.DEPTNO:=:PARAMETER.PDNO;
:DEPT.ENAME:=:PARAMETER.PNM;
INVOKING STACKED CANVAS
------------------------------------
SHOW_VIEW(<'STACKED_CAN_NAME'>);
HIDE_VIEW(<'STACKED_CAN_NAME'>);
----------------------
VIEWPORT --control the physical property of stacked canvas
WIDTH
HIGHT
X
Y
SHOW_VIEW('CAN_SALG');
GO_BLOCK('EMP');
HIDE_VIEW('CAN_SALG');