Home » Developer & Programmer » Forms » Using Webutil to export data to Excel
Using Webutil to export data to Excel [message #236877] |
Fri, 11 May 2007 03:36 |
RosieSA
Messages: 1 Registered: May 2007 Location: South Africa
|
Junior Member |
|
|
Hi All,
I'm trying to export data displayed in a form (Forms 10G) to an Excel spreadsheet. Firstly let me say that I am not a Forms developer, so have been thrown rather in the deep end here. I basically got some code from the Internet, that I copied and pasted into my WHEN_BUTTON_PRESSED trigger, but the code does not appear to do anything.
The code looks like this (I added the messages when attempting to debug and figure out what is going on):
MESSAGE('INSIDE WHEN BUTTON PRESSED TRIGGER');
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;
ARGS CLIENT_OLE2.LIST_TYPE;
CELL OLE2.OBJ_TYPE;
J INTEGER;
K INTEGER;
file_name_cl VARCHAR2(32767);
user_cancel EXCEPTION;
BEGIN
MESSAGE('AFTER DECLARATION');
file_name_cl := CLIENT_GET_FILE_NAME('C:\', 'file_name.xls', 'XLS Files (*.xls)|*.xls|', NULL, SAVE_FILE, TRUE);
file_name_cl := SUBSTR(file_name_cl,1,LENGTH(file_name_cl));
--
IF file_name_cl IS NULL THEN
MESSAGE('INSIDE EXCEPTION STATEMENT');
RAISE user_cancel;
END IF;
MESSAGE('STARTING TRIGGER');
APPLICATION := CLIENT_OLE2.CREATE_OBJ('Excel.Application');
CLIENT_OLE2.SET_PROPERTY(APPLICATION,'Visible',True);
MESSAGE('AFTER CREATING APPLICATION');
WORKBOOKS := CLIENT_OLE2.GET_OBJ_PROPERTY(APPLICATION, 'WORKBOOKS');
WORKBOOK := CLIENT_OLE2.INVOKE_OBJ(WORKBOOKS, 'ADD');
WORKSHEETS := CLIENT_OLE2.GET_OBJ_PROPERTY(WORKBOOK, 'WORKSHEETS');
WORKSHEET := CLIENT_OLE2.INVOKE_OBJ(WORKSHEETS, 'ADD');
MESSAGE('RIGHT BEFORE GO BLOCK STATEMENT');
GO_BLOCK('P10B1');
FIRST_RECORD;
J:=1;
K:=1;
WHILE :SYSTEM.LAST_RECORD = 'FALSE'
LOOP
FOR K IN 1..7 /* Form has 7 columns */
LOOP
MESSAGE('INSIDE LOOP');
If not name_in(:system.cursor_item) is NULL Then
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);
Client_OLE2.set_property(cell, 'Value', name_in(:system.cursor_item));
Client_OLE2.release_obj(cell);
End If;
NEXT_ITEM;
END LOOP;
J:=J+1;
NEXT_RECORD;
END LOOP;
/* For the last record */
for k in 1..7
loop
If not name_in(:system.cursor_item) is NULL Then
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);
Client_OLE2.set_property(cell, 'Value', name_in(:system.cursor_item));
Client_OLE2.release_obj(cell);
End If;
next_item;
end loop;
Client_OLE2.Release_Obj(worksheet);
Client_OLE2.Release_Obj(worksheets); */
/* Save the Excel file created */
args := Client_OLE2.Create_Arglist;
Client_OLE2.Add_Arg(args,'c:\temp\test.xls');
Client_OLE2.Invoke(workbook, 'SaveAs', args);
Client_OLE2.Destroy_Arglist(args);
/* release workbook */
Client_OLE2.Release_Obj(workbook);
Client_OLE2.Release_Obj(workbooks);
/* Release application */
Client_OLE2.Invoke(application, 'Quit');
Client_OLE2.Release_Obj(application);
MESSAGE('RIGHT BEFORE END');
END;
If I comment out everything except the messages, then all the messages display. As soon as I uncomment any code, I get the pop up to save the filename, but after that I only get the message "AFTER DECLARATION", and then nothing appears to happen further, and I can't exit the form.
I searched, and all the code I found was exactly in the same format as the code that I used, so now I am at a loss. I also saw that there were some previous posts on this forum regarding the issue, but no answers.
The system is a very old Forms 3 system that was upgraded last year from Forms 3 to Forms 10G.
I would really really appreciate any help.
Regards
Rosie
|
|
|
|
Re: Using Webutil to export data to Excel [message #237442 is a reply to message #236877] |
Mon, 14 May 2007 09:03 |
gacki
Messages: 33 Registered: May 2006 Location: Dueren, NRW, Germany
|
Member |
|
|
Rosi,
that code works like a charm at my site, so it must be something wrong with the WebUtil configuration at your site (CLIENT_OLE2 is WebUtil-specific). So you should try to get familiar with your development machine environment. Check out for the webutil files, it has a manual (pdf file), and try to check your configuration as described in the manual.
Gerald
|
|
|
Goto Forum:
Current Time: Thu Dec 26 15:40:29 CST 2024
|