Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Forms Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Из Forms6i с помощью ole надо в Excel поменять границы у ячеек, у конкрентной ячейки, у группы.
Как это сделать


Пытался сделать так, но нифига не выходит
args:=ole2.CREATE_ARGLIST;
ole2.ADD_ARG(Args, 'C5:K8');
cell:=ole2.get_OBJ_property(worksheet, 'range', Args);
ole2.DESTROY_ARGLIST(Args);
ole2.Invoke(cell,'select');
ole2.set_property(cell, 'Selection.Borders(xlDiagonalDown).LineStyle', 'xlContinuous');

Объясните пожалуйста назначение строки cell:=ole2.get_OBJ_property(worksheet, 'range', Args);
В ней разных случаях используются разные параметры например
cell:= ole2.GET_OBJ_PROPERTY(Application, 'Cells', args);


Буду очень признателен на ссылки с какой нить литературой, а также на различные примеры. В частности мне надо будет вставлять гиперссылку, менять цвет у части текста в ячейке и т.п.
20 июл 07, 16:01    [4417033]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
-k2-
Member

Откуда:
Сообщений: 5296
я бы сделала процедуру, которая выполняет экселевский макрос, а уже все это в макросе
20 июл 07, 16:11    [4417099]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Это как? Хочу через Ole, но такой вариант на будующее хотелось бы знать
20 июл 07, 16:15    [4417123]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
-k2-
Member

Откуда:
Сообщений: 5296
пожалуйста, наслаждайтесь:
http://www.orafaq.com/forum/t/46164/0/
а вообще ссылок есть в инете
20 июл 07, 16:26    [4417192]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
pan159
Member

Откуда: Москва
Сообщений: 674
Давайте мейл, пришлю библиотеку для вывода в Excel через OLE. Там это есть.
20 июл 07, 16:39    [4417279]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
andrey046 собака mail точка ru
20 июл 07, 16:42    [4417303]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
pan159
Member

Откуда: Москва
Сообщений: 674
Выслал
20 июл 07, 16:51    [4417348]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Получил, спасибо.
С OLE придеться наверно до понедельника подождать.
20 июл 07, 16:58    [4417406]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
up
23 июл 07, 11:18    [4422575]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Как мне кажется ошибка в этом месте:
cell:=ole2.get_OBJ_property(worksheet, 'range', Args);
нужно использовать другие параметры
23 июл 07, 13:47    [4423600]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
UK0IAI
Member

Откуда: питер
Сообщений: 12842
Вот дежурные примеры, только вы с переменными типа exl.cell.obj
сами разберитесь - это уже юзается тогда когда ЯЧЕЙКА екселя уже ВЫБРАНА
(метод select был применен). Заметьте что появляются "спец_фразы" типа
obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); . Это значит что если мы хотим изменить некие свойства ячейки мы тоолжны снача сделать ole2.get_obj_property для той ячейки (объекта) которая "хранится в переменной exl.cell.obj)


     if ColumnWidth is not null then -- чтобы ширину колонки задать всего 1 раз (когда шапку печатаем)
        ole2.set_property(exl.cell.obj, 'ColumnWidth', ColumnWidth);
     end if;  

     --ФОРМАТ В ТЕКСТ
     IF EXL.VAL_TYPE = 'CHR' THEN
     		ole2.set_property(exl.cell.obj, 'NumberFormat', '@');
     END IF;
     --ФОРМАТ В ЧИСЛО     
     IF EXL.VAL_TYPE = 'NUM' THEN
     		ole2.set_property(exl.cell.obj, 'NumberFormat', '#,##0.00');
     END IF;
     
     ole2.set_property(exl.cell.obj, 'Value', P_VAL);
  
     if exl.PrnBold then
        obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)   	
        ole2.set_property(obj1, 'Bold', 1);
        ole2.release_obj (obj1); -- надо делать релез для использ переменных
                                -- если не сделать -  получим ошибку при закрытии екселя     
     end if;	
    	
	--Форматы данных: 
	--ole2.set_property(excel_cell, 'NumberFormat', formatstring); 
	--formatstring - не ораклевый, а из экселя ;)).

    --Установить цвет ячейки------------------------
    if EXL.BACKGROUND is not null then
    	 obj1 :=OLE2.get_OBJ_property(exl.cell.obj, 'Interior');  
       OLE2.set_property(obj1, 'ColorIndex', EXL.BACKGROUND);
       OLE2.RELEASE_OBJ(obj1);
    end if;  

    --Установить рамку----------------------------
	  if exl.CELL_BORDER is not null then 
	  	obj1 := OLE2.get_OBJ_property(exl.cell.obj, 'Borders');		
    	OLE2.set_property(obj1, 'ColorIndex', exl.CELL_BORDER); -- exl.CELL_BORDER = магическое число....равно некой КОНСТАНТЕ что в екселе есть ==из дебагера узнается при прогоне дежурного макроса ....(ну в екселе самом)

    	OLE2.RELEASE_OBJ(obj1);
    end if;	
    
    -- Установить выравнивание по горизонту
   	if Exl.TEXT_ALIGN is not null then
   		 if Exl.TEXT_ALIGN = 'RIGHT' then
   		 	  OLE2.set_property(exl.cell.obj, 'HorizontalAlignment', -4152);
   		 end if;	  
   		 if Exl.TEXT_ALIGN = 'CENTER' then
   		 	  OLE2.set_property(exl.cell.obj, 'HorizontalAlignment', -4108);
   		 end if;	  
   		 if Exl.TEXT_ALIGN = 'LEFT' then
   		 	  OLE2.set_property(exl.cell.obj, 'HorizontalAlignment', -4131);
   		 end if;	  
   	end if;	 

	-- Установить выравнивание по ВЕРТИКАЛИ
   	if Exl.VERTICAL_ALIGN is not null then
   		 if Exl.VERTICAL_ALIGN = 'UP' then
   		 	  OLE2.set_property(exl.cell.obj, 'VerticalAlignment', -4160);
   		 end if;	  
   		 if Exl.VERTICAL_ALIGN = 'CENTER' then
   		 	  OLE2.set_property(exl.cell.obj, 'VerticalAlignment', -4108);
   		 	  OLE2.set_property(exl.cell.obj, 'WrapText',	TRUE);
   		 end if;	  
   		 if Exl.VERTICAL_ALIGN = 'DOWN' then
   		 	  OLE2.set_property(exl.cell.obj, 'VerticalAlignment', -4107);
   		 end if;	  
   	end if;	 
    -- ЗАДАТЬ ШРИФТ
    IF Exl.FONT_FAMILY is NOT NULL THEN
        obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)   	
        ole2.set_property(obj1, 'Name', Exl.FONT_FAMILY);
        ole2.release_obj (obj1); 
    end if;	
    -- ЗАДАТЬ ВЫСОТУ ШРИФТА
    IF Exl.FONT_WEIGHT is NOT NULL THEN
        obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)   	
        ole2.set_property(obj1, 'Size', Exl.FONT_WEIGHT);
        ole2.release_obj (obj1); 
    	 
    END IF;
    -- УСТАНОВИТЬ ЦВЕТ ШРИФТА
    IF Exl.FONT_COLOR is NOT NULL THEN
        obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)   	
        ole2.set_property(obj1, 'ColorIndex', Exl.FONT_COLOR);
        ole2.release_obj (obj1); 
    END IF;
    -- ВЫСОТА СТРОКИ
    IF Exl.VAL_HIGH is NOT NULL THEN     --- обратите внимание - алгоритм!!
        args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(args, r_row);   --- r_row = номер произвольной строки екселя 
        obj1 := ole2.get_obj_property(worksheet.obj, 'Rows',args); -- (excell_cell - текущая ячейка)   	
        OLE2.DESTROY_ARGLIST(args);
        ole2.set_property(obj1, 'RowHeight', Exl.VAL_HIGH );
        ole2.release_obj (obj1); 
    end if;    
 
23 июл 07, 19:28    [4425755]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Каким типом надо объявить EXL?
24 июл 07, 14:50    [4429129]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Не понял комментарий к данному блоку, где тут искать excell_cell ?
IF Exl.FONT_WEIGHT is NOT NULL THEN
obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)
ole2.set_property(obj1, 'Size', Exl.FONT_WEIGHT);
ole2.release_obj (obj1);

END IF;
24 июл 07, 15:01    [4429226]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Ваш код:
IF Exl.VAL_HIGH is NOT NULL THEN --- обратите внимание - алгоритм!!
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, r_row); --- r_row = номер произвольной строки екселя
obj1 := ole2.get_obj_property(worksheet.obj, 'Rows',args); -- (excell_cell - текущая ячейка)
OLE2.DESTROY_ARGLIST(args);
ole2.set_property(obj1, 'RowHeight', Exl.VAL_HIGH );
ole2.release_obj (obj1);
end if;

Преобразовал к такому:
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 5); --- r_row = íîìåð ïðîèçâîëüíîé ñòðîêè åêñåëÿ
obj1 := ole2.get_obj_property(worksheet, 'Rows',args); -- (excell_cell - òåêóùàÿ ÿ÷åéêà)
OLE2.DESTROY_ARGLIST(args);
ole2.set_property(obj1, 'RowHeight', 200 );
ole2.release_obj (obj1);

Т. е. у меня не worksheet.obj, а просто worksheet. Что такое worksheet.obj и как оно объявляется? Фрагменты кода где используется exl.cell.obj тоже не понял.
24 июл 07, 15:23    [4429436]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
UK0IAI
Member

Откуда: питер
Сообщений: 12842
Я торопился и не мог перевести...

мои "exl.cell.obj" - это прикладные переменные (пользователльского типа), объявленные в прикладном пакадже с именем EXL и они имеют тип ole2.obj_type. Вам конечно можно юзать вашу worksheet которая объявлена в начале процедуры.

Я вам показал общие примеры - как форматировать ексел, какие конструкции (магические слова) при этом прописывать.
25 июл 07, 09:02    [4432074]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Проделал различные комбинации, все тут приводить не буду, не смог ни закрасить ячейку ни рамку наложить и т.д., Excel даже не открывался. Получилось только высоту строки менять. Не могли бы Вы привести более подробный пример хотя для одного действия с ячейкой. Чтобы все в одной процедуре было. Буду очень признателен. Так же не понял что значит "это уже юзается тогда когда ЯЧЕЙКА екселя уже ВЫБРАНА"

PROCEDURE TO_EXCEL2 IS
application ole2.obj_type;
workbooks ole2.obj_type;
workbook ole2.obj_type;
worksheets ole2.obj_type;
worksheet ole2.obj_type;
cell ole2.obj_type;
obj1 ole2.obj_type;
cell1 ole2.obj_type;
args ole2.list_type;
BEGIN
--Êóñîê èíèöèàëèçàöèè
application:= ole2.create_obj('Excel.Application');
workbooks:= ole2.get_obj_property(application, 'Workbooks');
args:= ole2.create_arglist;

DEFAULT_VALUE('NO SET','GLOBAL.DIR');
IF :GLOBAL.DIR='NO SET' THEN
:GLOBAL.DIR:=Utility.Current_Dir();
END IF;
--ole2.add_arg(args,:GLOBAL.DIR||'ÆÓÐÍÀË_ÂÕÎÄßÙÈÕ.XLS');
ole2.add_arg(args,'C:\ORAPROG\Êèä\ÆÓÐÍÀË_ÂÕÎÄßÙÈÕ.XLS');

workbook:=OLE2.Invoke_Obj( workbooks,'Open', args);
ole2.destroy_arglist(args);
worksheets:=ole2.get_obj_property(workbook, 'Worksheets');

args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG( args, 1 );
worksheet:=OLE2.GET_OBJ_PROPERTY( workbook, 'Worksheets',args);
ole2.destroy_arglist(args);

--ÂÑÒÀÂÊÀ ÒÅÊÑÒÀ  ß×ÅÉÊÓ
args:= ole2.create_arglist;
ole2.add_arg(args, 4);
ole2.add_arg(args, 2);
cell:= ole2.GET_OBJ_PROPERTY(Application, 'Cells', args);
ole2.Invoke(cell,'select');
ole2.destroy_arglist(args);
ole2.set_property(cell, 'Value','ASDASDASDASDASDASDASD');

--Óñòàíîâèòü öâåò ÿ÷åéêè------------------------
/*ÁÛËÎ:
if EXL.BACKGROUND is not null then
obj1 :=OLE2.get_OBJ_property(exl.cell.obj, 'Interior');
OLE2.set_property(obj1, 'ColorIndex', EXL.BACKGROUND);
OLE2.RELEASE_OBJ(obj1);
end if; */
--ÑÄÅËÀË
args:= ole2.create_arglist;
ole2.add_arg(args, 4);
ole2.add_arg(args, 2);
obj1 :=OLE2.get_OBJ_property(Application, 'Interior',ARGS);
ole2.destroy_arglist(args);
OLE2.set_property(obj1, 'ColorIndex', 10);
OLE2.RELEASE_OBJ(obj1);


ole2.set_property(application, 'Visible', True);

--ole2.release_obj(cell);
ole2.release_obj(worksheet);
ole2.release_obj(worksheets);
ole2.release_obj(workbook);
ole2.release_obj(workbooks);
ole2.release_obj(application);

EXCEPTION WHEN Others THEN
--ole2.release_obj(cell);
ole2.release_obj(worksheet);
ole2.release_obj(worksheets);
ole2.release_obj(workbook);
ole2.release_obj(workbooks);
ole2.release_obj(application);
raise;

END;
25 июл 07, 15:57    [4435138]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
UK0IAI
Member

Откуда: питер
Сообщений: 12842
вот рабочий пример из инета,
а во вложенном файле - я даю образец формы. Это что то "нечто"...пофиксенное, но работает.

Общая тема - вывели в ексел, запустили запись макроса, кликаем разные форматы, потом возвращемся в листинг и ставим опции. Я это все вообще то из БД зачитывал, и форматировал когда то.


procedure from_inet is

   application     OLE2.OBJ_TYPE;
   workbook        OLE2.OBJ_TYPE;
   workbooks       OLE2.OBJ_TYPE;
   worksheet       OLE2.OBJ_TYPE;
   worksheets      OLE2.OBJ_TYPE;
   cell            OLE2.OBJ_TYPE;
   column          OLE2.OBJ_TYPE;
   row             OLE2.OBJ_TYPE;
   font            OLE2.OBJ_TYPE;

   args            OLE2.List_Type;
BEGIN
   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');

   --Set default for columns F, G and H 
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG(args, 'F:H');  --Columns F thru H
   column := OLE2.GET_OBJ_PROPERTY(worksheet, 'Columns', args);
   OLE2.DESTROY_ARGLIST(args);
   font := OLE2.GET_OBJ_PROPERTY(column, 'Font', args);
   OLE2.SET_PROPERTY(font, 'Name', 'Courier New');
   OLE2.SET_PROPERTY(font, 'Size', 12);
   OLE2.SET_PROPERTY(font, 'Strikethrough', 'True');
   OLE2.SET_PROPERTY(font, 'Bold', 'True');
   OLE2.SET_PROPERTY(font, 'ColorIndex', 5);  --Dark Blue
   OLE2.RELEASE_OBJ(font);   
   --Set width for columns F thru H to 25
   OLE2.SET_PROPERTY(column, 'ColumnWidth', 25);
   OLE2.RELEASE_OBJ(column);

   --Set default for rows 1 through 20
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG(args, '1:20');  --Rows 1 thru 20
   row := OLE2.GET_OBJ_PROPERTY(worksheet, 'Rows', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(row , 'RowHeight', 12);
   OLE2.RELEASE_OBJ(row);

   --Set row 4 height
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG(args, 4);  --Row 4
   row := OLE2.GET_OBJ_PROPERTY(worksheet, 'Rows', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(row , 'RowHeight', 25);
   OLE2.RELEASE_OBJ(row);

   --Set cell B4
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG(args, 4);  --Row 4
   OLE2.ADD_ARG(args, 2);  --Column B
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Value', 'Hello Excel!');
   font := OLE2.GET_OBJ_PROPERTY(cell, 'Font', args);
   OLE2.SET_PROPERTY(font, 'Name', 'Arial');
   OLE2.SET_PROPERTY(font, 'FontStyle', 'Italic');
   OLE2.SET_PROPERTY(font, 'Size', 20);
   -- possible Underline values = 2, 4, 5, -4119
   OLE2.SET_PROPERTY(font, 'Underline', -4119);
   OLE2.SET_PROPERTY(font, 'Bold', 'True');
   OLE2.SET_PROPERTY(font, 'ColorIndex', 3);  --Red
   OLE2.RELEASE_OBJ(font);
   OLE2.RELEASE_OBJ(cell);

   --Set cell F4
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args, 4);
   OLE2.ADD_ARG(args, 6);
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Value', 'Good Bye Excel!');
   OLE2.RELEASE_OBJ(cell);

   --Set cell B7
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args, 7);
   OLE2.ADD_ARG(args, 3);
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Value', 9);
   OLE2.RELEASE_OBJ(cell);

   --Set cell C7
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args, 7);
   OLE2.ADD_ARG(args, 'B');
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Value', 4);
   OLE2.RELEASE_OBJ(cell);

   --Set formula for cell D7
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args, '7');
   OLE2.ADD_ARG(args, 'D');
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Formula', '=B7*C7');
   OLE2.RELEASE_OBJ(cell);

   OLE2.RELEASE_OBJ(worksheet);
   OLE2.RELEASE_OBJ(worksheets);
   OLE2.RELEASE_OBJ(workbook);
   OLE2.RELEASE_OBJ(workbooks);
   OLE2.RELEASE_OBJ(application);
EXCEPTION
    WHEN others THEN
       OLE2.Release_Obj( application );
       message('Error');
END;


К сообщению приложен файл (Пример_2.fmb - 60Kb) cкачать
25 июл 07, 20:18    [4436423]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Mainframe
Member

Откуда: Москва
Сообщений: 16
В формзах, которые работают через аппссервер и на клиенте апплет (jinitiator), оле нету.
Хотя, если есть гарантия сидеть на Forms 6i долго, то сойдет.
25 июл 07, 23:43    [4436785]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
-k2-
Member

Откуда:
Сообщений: 5296
Mainframe
В формзах, которые работают через аппссервер и на клиенте апплет (jinitiator), оле нету.
Хотя, если есть гарантия сидеть на Forms 6i долго, то сойдет.


вот ужос-то, а у меня работает как-то наверное webutil неправильный :((
26 июл 07, 10:04    [4437564]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5967
Да и на application сервере, если он Windows, OLE2 работает :=) Тругое дело да - не кроссплатформенное. А кто обещал другое :=)
26 июл 07, 10:53    [4437868]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Большое спасибо. С ячейкой вроде освоился. Назрел следующий вопрос. Если в книге заранее был включен вид разметка страниц, то данные вставляются очень долго (за секунду где то ячейки 3). Хотелось бы после заполнения данными листа включить этот вид программно. Сделал макрос в Екселе он выдал следующее:
ActiveWindow.View = xlPageBreakPreview
В дебагере посмотрел что xlPageBreakPreview равно 2. Но вот какой код для этого нужен не понял, метод тыка результата не дал. Пробовал примерно такое:

List_:= ole2.GET_OBJ_PROPERTY(Application, 'Workbook');
vid := OLE2.get_OBJ_property(List, 'ActiveWindow');
OLE2.set_property(vid, 'View', 2);
OLE2.RELEASE_OBJ(List_);
OLE2.RELEASE_OBJ(vid);

Не могу найти информацию какие могут быть парамерты в GET_OBJ_PROPERTY ('Workbook','Workbooks' и прочее). Также не ясна ситуация с OLE2.Invoke_Obj
26 июл 07, 11:29    [4438129]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
UK0IAI
Member

Откуда: питер
Сообщений: 12842
не очень понял, но может быть это?

ole2.set_property (app, 'ScreenUpdating', false);   --выключает

ole2.set_property (app, 'ScreenUpdating', TRUE);  --включает 

за одно покажу как читать из екселя (если мою форму открывали, то к ней подходит) :-))

function  GET (P_ROW NUMBER, P_COL NUMBER) return varchar2 IS
	prizn BOOLEAN;
	obj1 ole2.obj_type;
	r_val varchar2(2000);
BEGIN
	prizn := exl.cell_define(P_ROW, P_COL); 
             r_val := exl.cell_value;
	exl.close_cell;
	return (r_val);
END;	

function  cell_value return varchar2 is 
    buff   varchar2(255); 
    begin
  
   if ole2.get_num_property (cell, 'Value') = 0 then
        buff:= ltrim(rtrim(ole2.get_char_property (cell.obj, 'Value')));
   else         		
        buff:= to_char(ole2.get_num_property (cell.obj, 'Value'));
   end if;
   return buff;
   exception when OTHERS then
      error_txt := 'OLE-000 Неопределенная ошибка OLE-EXCEL';
      return null;
end;
Не могу найти информацию какие могут быть парамерты в GET_OBJ_PROPERTY ('Workbook','Workbooks' и прочее). Также не ясна ситуация с OLE2.Invoke_Obj

Здесь юзаются все имена объектов екселя. Или иного OLE приложения. Например ворда или аутлука
26 июл 07, 20:52    [4442283]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Forms_Excel
Guest
Вот такой вид я хочу включит из формса после того как заполню лист данными

Модератор: Тема перенесена из форума "Oracle".


К сообщению приложен файл. Размер - 0Kb
27 июл 07, 10:01    [4443541]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Ole в Forms6i (Из формс в ексель)  [new]
voracle
Member

Откуда: Москва
Сообщений: 4
pan159,

мне тоже иожно выслать ? заранее спасибо !!
maxusemail@gmail.com
15 мар 16, 22:07    [18935735]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Миша78
Member

Откуда:
Сообщений: 30
Ребята, не у кого нет ссылки или дистрибутива Oracle Forms 6i. Хочу изучить, нашел доки, а дистрибутива в инете нет.
mihnih78@inbox.ru

Спасибо.
27 янв 17, 13:28    [20153170]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Les
Member

Откуда: Москва
Сообщений: 434
Миша78,
если все еще нужно, пиши, выложу на яндекс диск

les21
yandex
ru
30 янв 17, 13:54    [20161718]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
Джонни_Инглиш
Member

Откуда:
Сообщений: 78
voracle,

pan159,

Вышлите мне тоже, если не трудно, библиотека нужная.

i.saxarock@gmail.com
31 янв 17, 07:28    [20164382]     Ответить | Цитировать Сообщить модератору
 Re: Ole в Forms6i (Из формс в ексель)  [new]
pan159
Member

Откуда: Москва
Сообщений: 674
Странно даже, библиотека эта древняя, как яйца динозавра. Не помню чья она. Не пользовался ей уже много лет.

Вот ссылка на ЯД: https://yadi.sk/d/G8ZsOvpd3EswMB

Замечания выводу данных в excel. Есть три популярных способа:

1. Эта библиотека. Работает через OLE, выводит медленно.
А вот с импортом данных из excel в oracle, насколько я помню, были большие проблемы.
Аналогичные программы я как то использовал для связки со Skype (автоматически набирал номер из формсов).


2. Через ADO. В excel пишется небольшая программа на VBA, которая может как вводить, так и выводить данные. Может запускать процедуры в базе. Foms вообще не нужен. Довольно удобно для многих случаев.
Тот же метод можно использовать для других офисных программ. Для ворда и почты я использовал довольно успешно (приходят по почте сообщения и записываются автоматически в базу).

3.Вывод в xml формате. Берете excel файл - прототип отчета, сохраняете его в формате xml. Открываете текстовым редактором, смотрите внутрь. А потом чик-чик режете его на три части: голова, тело, хвост. Тело будете генерировать из формсов или из пакета, голову и хвост приклеите. Работает очень быстро.
Этот метод хорош тем, что его можно использовать для всех версий формсов. Он собственно с формсами слабо связан. Я видел следующую реализацию: формирование отчета на сервере, размещение итогового файла где то на файл сервере, доступ к отчету через веб+эксель.
2 мар 17, 11:42    [20256820]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Oracle Forms Ответить