0% found this document useful (0 votes)
1K views71 pages

D2K Forms

The document discusses different types of windows, canvases, and GUI items that can be used when designing an application in Oracle Forms. It provides details on how to create model windows, modeless windows, content canvases, stacked canvases, lists, radio buttons, checkboxes and other items. It also summarizes techniques for master-detail forms, creating relationships between blocks, and controlling query behavior.

Uploaded by

Jaya Madhuri
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views71 pages

D2K Forms

The document discusses different types of windows, canvases, and GUI items that can be used when designing an application in Oracle Forms. It provides details on how to create model windows, modeless windows, content canvases, stacked canvases, lists, radio buttons, checkboxes and other items. It also summarizes techniques for master-detail forms, creating relationships between blocks, and controlling query behavior.

Uploaded by

Jaya Madhuri
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 71

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 WINDOW OF APPLICATION

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 --go to item property --go to physical section --go to canvas --select the canvas name INTERACTIVE ITEM ON CANVAS

# 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 RUN TIME,WE CAN ATTACH SAME LOV TO TIME TO ONLY ONE RGP AT A TIME DIFFERENT RGP BUT AT A

--MORE THAN ONE LOV CAN BE ATTACHED TO --RGP & LOV CAN BE CREATED SEPARATELY TOGETHER --LOV CAN BE CREATED BY * WIZARD--generally used * MANUALLY # WHEN WE CREATE LOV THROUGH WIZARD AND BASED ON QUERY,automatically a RGP --this technique is generally used

SAME RGP AND WILL BE ATTACHED

created and attached to the LOV

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 --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 --------------------------------------------------BLOCK AT OBJ NVG

# 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 QUERY AT MASTER BLOCK DETAIL BLOCK WHEN WE DO

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 --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 EVENT

COMPONENT OF FORM TRIGGERS --------------------------------------* TYPE--pre-defined * SCOPE--pre-defined * CODE--user written progm

nxt class

TYPE ------PREPOSTWHENONKEY------------------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 object

--it is fired when the control focused to the form --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 --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---------------------------------------------SPECIFIC KEY

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_NAME>.<ITEM_NAME> BLOCK

: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 --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 * which system variable can be changed user by user???? FORM AT RUN TIME

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 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 PACAKGE

* 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 2. ALERT_BUTTON2 OK --default 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 --for conditional query we can use following methods from query block

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 time condition at query block property at run

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 ALWAYS IN INSERT STATUS

SELECT STATEMENT IS

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 BY USING * GLOBAL VARIABLE * PARAMETERLIST --generally used FORM TO CALLED FORM

--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 & --THE WINDOW BEHAVIOUR OF CALLED FORM MODEL WINDOW --AFTER EXIT FROM CALLED FORM THE CONTROL FORM GOES BACK TO CALLING CALLED FORM

BECOME AS

2. OPEN_FORM -----------------MORE THAN ONE FORM CAN BE CALLED --CALLING FORM NOT SUSPENDED --NAVIGATION POSSIBLE B/W CALLING FORM & --WINDOW BEHAVIOUR OF CALLED FORM IS AS MODELESS WINDOW --AFTER EXIT FROM CALLED FORM,THE CONTROL FORM GOES BACK TO CALLING CALLED 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 DQL operation only ---------------------------------------------------QUERY_ONLY--only DQL operation on called NO_QUERY_ONLY--both DML/DQL on called form form OR

-------------------------------------------------------PARAMETERLIST --used for passing the value from calling form to called CALLING FORM ----VALUE---->CALLED FORM # we have to write parameterlist progarm by usimg some special built-ins form

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 NO_SESSION--called form using same database 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 --it can be used for FORM TO FORM --not allowed FORM TO REPORTS FORM TO GRAPHICS recordgroup

--------------------------------------------------------# FOR PARAMETERLIST PROGRAM WE USE * CREATE_PARAMETER_LIST * ADD_PARAMETER * DESTROY_PARAMETER_LIST --optional --the pmlist created at run time works only --DATATYPE=PARAMLIST once FOLLOWING BUILT-INS

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 WIDTH HIGHT X Y canvas

SHOW_VIEW('CAN_SALG');

GO_BLOCK('EMP'); HIDE_VIEW('CAN_SALG');

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy