Home » Developer & Programmer » Forms » webuutil -- application := CLIENT_OLE2.create_obj('Excel.Application') not working
webuutil -- application := CLIENT_OLE2.create_obj('Excel.Application') not working [message #675441] Fri, 29 March 2019 06:23
kishorebonthala
Messages: 16
Registered: May 2008
Location: Bangalore
Junior Member


My form Version -- Forms [32 Bit] Version 9.0.4.0.19 (Production).

it's not coming to MESSAGE('2 create_obj'); i think it's failing at application := CLIENT_OLE2.create_obj('Excel.Application');


DECLARE

application Client_OLE2.Obj_Type;

workbooks CLIENT_OLE2.Obj_Type;

workbook CLIENT_OLE2.Obj_Type;

worksheets CLIENT_OLE2.Obj_Type;

worksheet CLIENT_OLE2.Obj_Type;

worksheet2 CLIENT_OLE2.Obj_Type;

cell CLIENT_OLE2.OBJ_TYPE;

args CLIENT_OLE2.OBJ_TYPE;

cell_value varchar2(100);

num_wrkshts NUMBER;

wksht_name VARCHAR2(250);

eod Boolean := false;

j integer := 1;

v_fName VARCHAR2(250);

BEGIN

-- Get the name of the file to open

--v_fName := 'C:\planets.xls';

-- My Way: Use a File Open Dialog to let the user select the file.

v_fName := WebUtil_File.File_Open_Dialog(

directory_name => 'C:\'

,File_Filter => null

,Title => 'Select Client filename to Open.'
);


-- Make sure the user selected a file

IF ( v_fName IS NOT NULL ) THEN

-- The following sets up communication with the excel spreadsheet

-- --------------------------------------------------------------


MESSAGE('1 create_obj');
MESSAGE('1 create_obj');

-- Open the OLE application
application := CLIENT_OLE2.create_obj('Excel.Application');

MESSAGE('2 create_obj');
MESSAGE('2 create_obj');

-- Keep the application hidden

CLIENT_OLE2.set_property(application,'Visible','false');



workbooks := CLIENT_OLE2.Get_Obj_Property(application, 'Workbooks');

args := CLIENT_OLE2.CREATE_ARGLIST;



-- Open the selected File

-- ----------------------

CLIENT_OLE2.add_arg(args,v_fName);

workbook := CLIENT_OLE2.GET_OBJ_PROPERTY(workbooks,'Open',args);

CLIENT_OLE2.destroy_arglist(args);



worksheets := CLIENT_OLE2.GET_OBJ_PROPERTY(workbook, 'Worksheets');



-- Get number of worksheets

-- ------------------------

num_wrkshts := CLIENT_OLE2.GET_NUM_PROPERTY(worksheets, 'Count');

worksheet := CLIENT_OLE2.GET_OBJ_PROPERTY(

application,'activesheet');



--Go to the first record

go_block('planets');

first_record;



-- Loop through the Block and create a new row if needed.

loop

If :system.record_status <> 'NEW' then

create_record;

end if;



-- Exit when the last row of the spreadsheet is reached.

exit when eod;



-- Loop through the spreadsheet and get cell values

for k in 1..3 loop --3 fields per record

-- You have to know fields there are

args:= CLIENT_OLE2.create_arglist;

CLIENT_OLE2.add_arg(args, j);

CLIENT_OLE2.add_arg(args, k);

cell:= CLIENT_OLE2.get_obj_property(worksheet, 'Cells', args);

CLIENT_OLE2.destroy_arglist(args);

cell_value :=CLIENT_OLE2.get_char_property(cell, 'Value');



-- Check for End of Data...

if upper(cell_value) = 'EOD' then

eod:=true;

Message('End of Data');

exit;

end if;



-- Copy the value from Excel to the Forms block item

-- This is how the Oracle example copied values

/*if k =1 then

:dept.deptno:=cell_value;

end if;



if k =2 then

:dept.dname:=cell_value;

end if;



if k =3 then

:dept.loc:=cell_value;

end if;

*/



-- This is my way; which is more efficient and less code

copy(cell_value,name_in('system.cursor_item'));

next_item;



end loop; --for



j:=j+1;

end loop; --main loop



-- Release the CLIENT_OLE2 object handles

IF (cell IS NOT NULL) THEN

CLIENT_OLE2.release_obj(cell);

END IF;

IF (worksheet IS NOT NULL) THEN

CLIENT_OLE2.release_obj(worksheet);

END IF;

IF (worksheets IS NOT NULL) THEN

CLIENT_OLE2.release_obj(worksheets);

END IF;

IF (worksheet2 IS NOT NULL) THEN

CLIENT_OLE2.release_obj(worksheet2);

END IF;

IF (workbook IS NOT NULL) THEN

CLIENT_OLE2.release_obj(workbook);

END IF;

IF (workbooks IS NOT NULL) THEN

CLIENT_OLE2.release_obj(workbooks);

END IF;

CLIENT_OLE2.invoke(application,'Quit');

CLIENT_OLE2.release_obj(application);

ELSE

Message('No File selected.');

message(' ');

RAISE Form_Trigger_Failure;

END IF;
EXCEPTION WHEN OTHERS THEN

MYLOG(SQLERRM);
END;
Previous Topic: How to insert CSV Column values into data block using Oracle Forms?
Next Topic: Importing csv file columns data into Data Block Using Oracle Forms
Goto Forum:
  


Current Time: Mon Jun 01 21:47:00 CDT 2020