FRM-50016 Legal Characters are 0-9 -+E Error Oracle Forms [message #675453] |
Sun, 31 March 2019 03:33 |
|
rehmankhan
Messages: 22 Registered: July 2018
|
Junior Member |
|
|
I created Oracle Form in which user "Browse" the "CSV" file from target and target link will we appear in Text Field Item. After user press save button and column values will be read from "CSV" File and Show column values into Data Block. For this purpose I used Client_OLE2.create_obj('EXCEL.Application') Procedure.
In "CSV" File Some Columns Like This Before Adjust Width:
4th Column "6E+09"
After Adjust width Like This:
Now 4th Column Value "6000000116"
After adjust the column width it did not save the file after adjust width.
My Code:
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;
BEGIN
IF ( :WE_GROUP.FILE IS NOT NULL ) THEN
-- The following sets up communication with the excel spreadsheet
-- --------------------------------------------------------------
-- Open the OLE application
application := Client_OLE2.create_obj('EXCEL.Application');
-- 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,:WE_GROUP.FILE);
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('WE_GROUP_HOF_K');
first_record;
loop
If :system.record_status <> 'NEW' then
create_record;
end if;
exit when eod;
for k in 1..29 loop --3 fields per record
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');
--Could be done this way also ->
/*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;
*/
--Less code this way ->
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;
END;
Now when I press save button then I am getting following error:
FRM-50016 Legal Characters are 0-9 -+E
How to solve this problem? Oracle Forms 11gR2
|
|
|
Re: FRM-50016 Legal Characters are 0-9 -+E Error Oracle Forms [message #675456 is a reply to message #675453] |
Mon, 01 April 2019 03:24 |
cookiemonster
Messages: 13962 Registered: September 2008 Location: Rainy Manchester
|
Senior Member |
|
|
6E+09 is something excel does when the column isn't wide enough. It's got nothing to do with how the data is actually stored in the file.
If you want to be sure what data is in the file open it in a text editor (eg notepad) instead of excel.
So what ever forms is actually complaining about, it almost certainly isn't that.
It'll be some other non-numeric data in an item you've set as numeric.
You need to debug and find out which column and which row is causing the error.
Wrap the copy call with an exception handler that'll display cell_value, system.cursor_item and system.cursor_record.
|
|
|
|
|
|
|