Загрузите лист Excel в базу данных Oracle через формы 6i

Я получил ссылку, которая имеет этот код для загрузки данных Excel в таблицу базы данных через формы оракула,

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.OBJ_TYPE;   
 ctr NUMBER(12);   
 cols NUMBER(2);  
 name_var1 VARCHAR2(2000);   
 name_var2 VARCHAR2(2000);   
 name_var3 VARCHAR2(2000);   
 name_var4 VARCHAR2(2000);   
 filename varchar2(100);  

 PROCEDURE OLEARG IS  
 args OLE2.OBJ_TYPE;   
 BEGIN  
 args := OLE2.CREATE_ARGLIST;   
 ole2.add_arg(args,ctr); -- row value  
 ole2.add_arg(args,cols); -- column value  
 cell := ole2.GET_OBJ_PROPERTY(worksheet,'Cells',args); -- initializing cell  
 ole2.destroy_arglist(args);   
 END;  

 BEGIN  
 filename :=GET_FILE_NAME('c:\', File_Filter=>'Excel Files (*.xls)|*.xls|'); -- to pick the file  
 application := OLE2.CREATE_OBJ('Excel.Application');   
 ole2.set_property(application,'Visible','true');   
 workbooks := OLE2.GET_OBJ_PROPERTY(application, 'Workbooks');   
 args := OLE2.CREATE_ARGLIST;   
 ole2.add_arg(args,filename); --'c:\13s002.xls'); -- file path and name  
 workbook := ole2.GET_OBJ_PROPERTY(workbooks,'Open',args);   
 ole2.destroy_arglist(args);   
 args := OLE2.CREATE_ARGLIST;   
 ole2.add_arg(args,'Sheet1');   
 worksheet := ole2.GET_OBJ_PROPERTY(workbook,'Worksheets',args);   
 ole2.destroy_arglist(args);   

 ctr := 2; --row number  
 cols := 1; -- column number  

 FIRST_RECORD;   

 LOOP   
 OLEARG;  
 name_var1 := ole2.get_char_property(cell,'Value'); --cell value of the argument  
 cols := cols+1;  

 OLEARG;  
 name_var2 := ole2.get_char_property(cell,'Value'); --cell value of the argument  
 cols := cols+1;  

 OLEARG;  
 name_var3 := ole2.get_char_property(cell,'Value'); --cell value of the argument  
 cols := cols+1;  

 OLEARG;  
 name_var4 := ole2.get_num_property(cell,'Value'); --cell number value of the argument  

 IF ctr = 1 then   
 :tf1 := name_var1;   
 :tf2 := name_var2;   
 :tf3 := name_var3;   
 :tf4 := name_var4;   
 ELSE   
 NEXT_RECORD;   
 :tf1 := name_var1;   
 :tf2 := name_var2;   
 :tf3 := name_var3;   
 :tf4 := name_var4;  
 END IF;   

 EXIT WHEN length(name_var1) = 0 or length(name_var1) is null;   
 ctr := ctr + 1;   
 cols := 1;  

 END LOOP;   
 OLE2.INVOKE(application,'Quit');   
 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;   

у меня есть формы оракула 6i проблема в том, что есть некоторые аргументы, которые я должен заменить значениями, и я не знаю, какие аргументы я должен заменить значениями? не могли бы вы сказать мне?

- Я создал 4 текстовых элемента (:tf1,:tf2,:tf3,:tf4). - У меня есть файл.xls под названием "сотрудники" в разделе "d:\" . - эти строки

name_var1 := ole2.get_char_property(cell,'Value'); --cell value of the argument 
cols := cols+1;
OLEARG;
name_var2 := ole2.get_char_property(cell,'Value'); --cell value of the argument 
cols := cols+1;
OLEARG;
name_var3 := ole2.get_char_property(cell,'Value'); --cell value of the argument 
cols := cols+1;
OLEARG;
name_var4 := ole2.get_num_property(cell,'Value'); --cell number value of the argument  , 

Я думаю, что аргумент "Значение" должен быть заменен чем-то, но я не знаю, что это? и что означает "значение ячейки аргумента" и

"номер ячейки аргумента"

?

1 ответ

Вам нужно будет найти больше информации об этом классе. Это выглядит как 'Value' это данные, которые вы хотите вернуть из ячейки: значение или формула. OLEARG; это встроенная процедура, которая должна быть последним определением в вашем начальном блоке. cols используется для обхода каждого столбца, а ctr - для прохода по строкам файла xls. OLEARG; ожидает, что эти имена переменных существуют в вашем коде. Если у вас есть больше столбцов, то вам нужно иметь набор из этих трех операторов для каждого дополнительного столбца

OLEARG; name_var3 := ole2.get_char_property(cell,'Value'); cols := cols+1;

Вы понимаете, что вам придется удалить весь этот код при переходе на другую версию форм выше 6i?

Другие вопросы по тегам