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/