Re: OLE2 ==> Excel97 ==> Dr. Watson???
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
