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/