Re: OLE2 ==> Excel97 ==> Dr. Watson???

From: Tom Verhagen <tverhage_at_aon.nl>
Date: Thu, 01 Jul 1999 08:10:54 +0200
Message-ID: <377B066E.137DE6CC_at_aon.nl>


I think the release_obj(cell) must be in the loop..

Bert Vanderstraeten wrote:

> Hi, this code loads table names into a cursor and fills them into an Excel
> sheet. Everything runs well untill the excel sheet is closed. This action
> brings up Dr.Watson with some exception error. My guess is it must be one of
> the Object_releases. The error however does not appear when the loop is left
> out.
>
> Any bright ideas anyone?
>
> Thx a million!
>
> Bert Vanderstraeten
>
> DECLARE
> application OLE2.OBJ_TYPE;
> workbooks OLE2.OBJ_TYPE;
> workbook OLE2.OBJ_TYPE;
> worksheets OLE2.OBJ_TYPE;
> worksheet OLE2.OBJ_TYPE;
> cell OLE2.OBJ_TYPE;
>
> args OLE2.LIST_TYPE;
> rownumber NUMBER:=1;
>
> CURSOR c_tables IS select table_name from user_tables;
>
> BEGIN
>
> -- Start Excel and make visible --
> application:=OLE2.CREATE_OBJ('Excel.Application');
> ole2.set_property(application,'Visible',TRUE);
>
> workbooks:=OLE2.GET_OBJ_PROPERTY(application,'Workbooks');
> workbook:=OLE2.INVOKE_OBJ(workbooks,'Add');
> worksheets:=OLE2.GET_OBJ_PROPERTY(workbook,'Worksheets');
> worksheet:=OLE2.INVOKE_OBJ(worksheets,'Add');
>
> for record in c_tables loop
> args:=OLE2.CREATE_ARGLIST;
> OLE2.ADD_ARG(args,rownumber);
> OLE2.ADD_ARG(args,3);
> cell:=OLE2.GET_OBJ_PROPERTY(worksheet,'Cells',args);
> OLE2.DESTROY_ARGLIST(args);
> OLE2.SET_PROPERTY(cell,'Value',record.table_name);
> rownumber:=rownumber+1;
> end loop;
>
> OLE2.RELEASE_OBJ(cell);
> OLE2.RELEASE_OBJ(worksheet);
> OLE2.RELEASE_OBJ(worksheets);
> OLE2.RELEASE_OBJ(workbook);
> OLE2.RELEASE_OBJ(workbooks);
> OLE2.RELEASE_OBJ(application);
>
> END;
Received on Thu Jul 01 1999 - 08:10:54 CEST

Original text of this message