APPENDIX 3

PL/SQL CODE


The user interface in Developer 2000 is built in the same way as VB6.0. D2000 has got a layout editor with drag and drop facility. Each interface can generate events called Triggers. These triggers are defined in PL/SQL. Some sample triggers are shown below:


 (a)	PRE_TEXT_ITEM (If the item get focus): DAP_SP.WAREHOUSE_NAME (Text Item) 

 SELECT WAREHOUSE_NAME INTO :DAP_SP.WAREHOUSE_NAME FROM WHOUSE_DET 
 WHERE WAREHOUSE_ID= :DAP_SP.WAREHOUSE_ID; 

 (b)	WHEN_RADIO_CHANGED (If a radiogroup item is changed): INPUT_DIST.RADIO_GROUP1 

 IF (:INPUT_DIST..RADIO_GROUP1 = '2') then 
  SET_ITEM_PROPERTY('INPUT_DIST.INPUT_DIST',DISPLAYED,PROPERTY_FALSE); 
  SET_ITEM_PROPERTY('INPUT_DIST.INPUT_COST',POSITION,111,76); 
  SET_ITEM_PROPERTY('INPUT_DIST.INPUT_COST',DISPLAYED,PROPERTY_TRUE); 
  SET_ITEM_PROPERTY('INPUT_DIST.INPUT_COST',ENABLED,PROPERTY_TRUE); 
 ELSE 
  SET_ITEM_PROPERTY('INPUT_DIST.INPUT_COST',DISPLAYED,PROPERTY_FALSE); 
  SET_ITEM_PROPERTY('INPUT_DIST.INPUT_DIST',POSITION,111,76); 
  SET_ITEM_PROPERTY('INPUT_DIST.INPUT_DIST',DISPLAYED,PROPERTY_TRUE); 
  SET_ITEM_PROPERTY('INPUT_DIST.INPUT_DIST',ENABLED,PROPERTY_TRUE); 
 END IF; 

 The above code shows a pull-down menu according to radio-group selection. 

 (c)	WHEN_BUTTON_PRESSED (Triggered when button is pressed) 

 DECLARE 
 prod_id varchar2(6); 
 v_prod varchar2(15); 

 appid PLS_INTEGER; 
 convid PLS_INTEGER; 
 docid PLS_INTEGER; 
 conv_established BOOLEAN := FALSE; 

 BEGIN 

 v_prod :=:calculation_block.product; 
 select prod_id into prod_id from prod_det where prod_name=v_prod; 

 appid := DDE.APP_BEGIN('c:\micros~1\office\excel.EXE', DDE.APP_MODE_MAXIMIZED);  
 WHILE NOT conv_established LOOP      
 	BEGIN 
 		convid := DDE.INITIATE('excel', 'system');  
 	    	conv_established := TRUE; 
 	EXCEPTION 
        		WHEN DDE.DMLERR_NO_CONV_ESTABLISHED THEN              
        		conv_established := FALSE; 
     	END; -- loop  
 END LOOP;  

 DDE.EXECUTE(convid, '[Open("d:\hllfor~1\schedule.xls")]', 20000);   
 docid := DDE.INITIATE('excel', 'd:\hllfor~1\schedule.xls'); 

 DDE.POKE(docid, 'R10C5', v_prod, DDE.CF_TEXT, 20000);  
 DDE.POKE(docid, 'R10C6', prod_id, DDE.CF_TEXT, 20000); 
 DDE.TERMINATE(docid); 
 DDE.TERMINATE(convid); 
 END; 
 The above code opens an Excel sheet when a button is pressed and passes some values in specified cells in Excel. 

 (d)	WHEN_BUTTON_PRESSED (Triggered when button is pressed): CALCULATION BLOCK.CANCEL 

 NEW_FORM('d:\hllfor~1\screen2.fmx'); 

This button, when pressed, hides the existing form on the screen and loads new form. There are other versions of the same program using 'SHOW_FORM' or 'CALL FORM', which are used as needed.

J More examples can be found at: http://technet.oracle.com/