Anda di halaman 1dari 2

PROCEDURE ddepack IS

appid PLS_INTEGER;
convid PLS_INTEGER;
docid PLS_INTEGER;
conv_established BOOLEAN := FALSE;
buffer1 VARCHAR2(14);
buffer2 VARCHAR2(14);
buffer3 VARCHAR2(13);
DNO VARCHAR2(14);
DN VARCHAR2(14);
DL VARCHAR2(13);
LC VARCHAR2(6);
I NUMBER(2) := 1;

BEGIN

APPID := DDE.APP_BEGIN('C:\Program Files\Microsoft Office\Office10\excel.EXE',


DDE.APP_MODE_MINIMIZED);

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;
END LOOP;

DDE.EXECUTE(convid, '[Open("d:\test\book1.xls")]', 10000);


docid := DDE.INITIATE('excel', 'd:\test\book1.xls');

LOOP

LC := 'R'||I||'C1';
DDE.REQUEST (docid, LC, buffer1, DDE.CF_TEXT, 1000);
DN := BUFFER1;
exit when SUBSTR(BUFFER1,1,LENGTH(BUFFER1)-2)= 'END' ;
IF SUBSTR(BUFFER1,1,LENGTH(BUFFER1)-2)= 'END' THEN

set_item_property('a',enabled,property_false);

go_block('dept2');
execute_query;
end if;

LC := 'R'||I||'C2';
DDE.REQUEST (docid, LC, buffer2, DDE.CF_TEXT, 1000);
DN := BUFFER2;
LC := 'R'||I||'C3';
DDE.REQUEST (docid, LC, buffer3, DDE.CF_TEXT, 1000);
DL := BUFFER3;

INSERT INTO DEPT2


VALUES(SUBSTR(BUFFER1,1,LENGTH(BUFFER1)-2),
SUBSTR(DN,1,LENGTH(DN)-
2),SUBSTR(DL,1,LENGTH(DL)-2));
COMMIT;
I := I+1;
END LOOP;

DDE.TERMINATE(docid);
DDE.TERMINATE(convid);
DDE.APP_END(appid);

EXCEPTION
WHEN DDE.DDE_APP_FAILURE THEN
MESSAGE('WINDOWS APPLICATION CANNOT START.');
WHEN DDE.DDE_PARAM_ERR THEN
MESSAGE('A NULL VALUE WAS PASSED TO DDE');
WHEN DDE.DMLERR_NO_CONV_ESTABLISHED THEN
MESSAGE('DDE CANNOT ESTABLISH A CONVERSATION');
WHEN DDE.DMLERR_NOTPROCESSED THEN
MESSAGE('A TRANSACTION FAILED');

END;

Anda mungkin juga menyukai