Documente Academic
Documente Profesional
Documente Cultură
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
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 &
VALUE --FOR SELECTED ELEMENTS,THIS VALUE GOES TO COLUMN OF TABLE AFTER COMMIT
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$$
--------------------------------
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
<NULL>
-----------------------------------------------------
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
-----------------------------------------------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
--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
-------------------------------
----------------------------------------
# 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)
----------------------------------------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 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
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
EMP.DEPTNO=DEPT.DEPTNO
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
--------------------------------------------------
COORDINATION PROPERTY --------------------------------IT CONTROL THE QUERY BEHAVIOUR OF QUERY AT MASTER BLOCK DETAIL BLOCK WHEN WE DO
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 --when control goes to detail block,immediately child data displayed
2. deferred without auto-query --we have to do separate query for child data
--------------end--------------------------# COMBINATION BLOCK # SUMMARY BLOCK --6i -----------------------------------------for salcomm -------------------------GO TO PROPERTY OF SALCOMM --GO TO CALCULATION SECTION --CALCULATION MODE=FORMULA --CLICK ON FORMULA
--for sum(sal) --------------------go to property of sumsal --go to calculation section --calculation mode=summary *summary function=sum *summarized block=emp *summarized item=sal
------------------------------------
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
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 when the control focused to the form --generally used for initialization
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
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
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:=' ';
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;
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
----------------------------------------------
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
CLEAR_FORM;
DELETE_RECORD; COMMIT;
UPDATE_RECORD;
COMMIT;
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_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
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);
GO_BLOCK('DEPT');
:DEPT.DEPTNO:=:GLOBAL.PDNO;
W.N.B.I(DEPT)
:DEPT.DEPTNO:=:GLOBAL.PDNO;
GO_BLOCK('DEPT'); :DEPT.DEPTNO:=:EMP.DEPTNO;
: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;
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;
CLEAR_ITEM;
INVOKE SAME LOV TO TWO DIFFERNT BLOCK WITH ASSIGNMENT -----------------NXT CLASS
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
---------------------------------------------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;
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
user-defined editor --DB CLICK ON EDITOR AT OBJ NVG --CUSTOMIZE THE EDITOR if required
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
EXECUTE_QUERY;
CLEAR_BLOCK(NO_COMMIT); EXECUTE_QUERY;
SET_BLOCK_PROPERTY('EMP',
SELECT STATEMENT IS
# 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
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
SWITCH_MENU_MODE --which menu visible calling form/called form ----------------------------DO_REPLACE--menu of called 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
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
W.N.F.I
ROLLBACK MODE --for unsaved data of calling form --------------------------------------TO_SAVEPOINT --default --generally used NO_ROLLBACK FULL_ROLLBACK
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
# TEXT_PARAMETER--generally used -----------------------IT PASSES SINGLE VALUE AT A TIME --ACCEPTS ONLY STRING VALUE TO PASS --CAN BE USED FOR FORM TO FORM
# 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
END;
W.N.B.I(FORMB) -------------------:DEPT.DEPTNO:=:PARAMETER.PDNO;
:DEPT.ENAME:=:PARAMETER.PNM;
SHOW_VIEW('CAN_SALG');
GO_BLOCK('EMP'); HIDE_VIEW('CAN_SALG');