powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / ORACLE FORMS 6- EXCEL
10 сообщений из 10, страница 1 из 1
ORACLE FORMS 6- EXCEL
    #36452051
last_dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди добрые помогите, подскажите как можно через формсы экспортировать данные в EXCEL.
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36452392
webutil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
last_dba,

webutil
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36452643
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через ole, через создание текстового файла csv, через создание определенного xml файла, который поймет excel...
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36453513
medichi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
last_dbaЛюди добрые помогите, подскажите как можно через формсы экспортировать данные в EXCEL.

Вот кусок текста (не мой), когда-то сильно пригодился... К сожалению ссылка не сохранилась.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
-- Экспорт данных в MS Excel из Oracle
declare
-- в таблице PROGTBL. 
 
  CURSOR curTotal IS   
  SELECT COUNT(*) RecNumber FROM PROGTBL ato
  where UPPER(ato.PROGRAM) = 'POISK';
   
  recTotal curTotal%ROWTYPE; 
 
-- Курсор для чтения записей из таблицы PROGTBL. 
 
  CURSOR curDEBUGTBL IS 
  SELECT ato.TEXT TEXT
  FROM PROGTBL ato
  where UPPER(ato.PROGRAM) = 'POISK'
  ORDER BY ato.AVTOR, ato.SESS_NUMB;
   
  recDEBUGTBL curDEBUGTBL%ROWTYPE; 
   
-- Локальные переменные для заполнения ячеек Exсel 
   
  vLocTEXT VARCHAR2( 2000 ) := ' '; -- TEXT
   
-- Переменные для адресов ячеек Excel 
  
  rc1 VARCHAR2(  10 ) := 'r1c1'; 
  rc2 VARCHAR2(  10 ) := 'r1c2'; 
  rc3 VARCHAR2(  10 ) := 'r1c3'; 
  
  idApp PLS_INTEGER; -- идентификатор DDE приложения 
  idConv PLS_INTEGER; --идентификатор DDE диалога 
  
  nRecNUMBER NUMBER :=  0 ; -- общее количество записей 
  vRecNUMBER VARCHAR2( 30 ) := ''; -- кол.записей в символьном
   
  barWidth NUMBER :=  0 ; -- длина индикатора выполнения 
  nButton PLS_INTEGER :=  0 ; -- номер кнопки 
  i NUMBER :=  1 ; -- счетчик строк 
  
  bErr BOOLEAN := TRUE; -- признак завершения с ошибками 
	  vErrText VARCHAR2(  1000 ) := ''; -- текст ошибки 
 
 
  
-- Процедура завершения работы. 
  
   PROCEDURE To_Complete IS 
    
-- Завершаем диалог с Excel. 
-- Возвращаем экранному курсору нормальный вид. 
-- Возвращаемся в основной блок. 
 
   BEGIN 
 
    DDE.Terminate( idConv); 
    Set_Application_Property( CURSOR_STYLE, 'DEFAULT');
    -- Go_Block( 'BLK_MAIN'); 
    
-- Если были ошибки, сообщаем о них пользователю 
-- и завершаем работу подпрограммы с помощью 
-- встроенного исключения. 
 
     IF bErr = TRUE THEN 
       Inform(vErrText, 'E', FALSE);
       RAISE Form_Trigger_Failure; 
       END IF; 
   END; 
  
-- НАЧАЛО 
 
BEGIN 
  
-- Если выходная таблица Excel SALARY_TEXT.XLS открыта,  
-- то реакция разных версий Excel не одинакова. 
-- Но, в любом случае, ситуация является конфликтной, 
-- поэтому предлагаем пользователю закрыть таблицу.  
 
  BEGIN  
  
    WHILE TRUE LOOP 
         idConv := DDE.Initiate('EXCEL.EXE', 'TEXT_LIST.XLS');
         Set_Alert_Property( 'SIGNAL2', ALERT_MESSAGE_TEXT, 
             'Закройте таблицу Excel '|| 
               'и нажмите ОК для продолжения.'); 
    
         IF( Show_Alert( 'SIGNAL2') = ALERT_BUTTON2) THEN
             RETURN; -- пользователь нажал кнопку "Отменить
         END IF; 
    END LOOP;  
   
  EXCEPTION 
  WHEN DDE.Dmlerr_No_Conv_EstablIShed THEN 
   NULL; 
  END; 
   
-- Экранный курсор -> песочные часы 
  
   Set_Application_Property( CURSOR_STYLE, 'BUSY'); 
 
-- Подсчитываем общее количество строк для записи в Excel
 
   OPEN curTotal; 
   FETCH curTotal INTO recTotal; 
   nRecNUMBER := recTotal.RecNUMBER; 
   CLOSE curTotal; 
  
-- Возвращаем экранному курсору нормальный вид  
 
   Set_Application_Property( CURSOR_STYLE, 'DEFAULT'); 
 
-- Если записей нет, сообщаем об этом пользователю  
-- и завершаем работу 
  
   IF nRecNumber IS NULL THEN 
     Inform('Нет записей для экспорта в Excel.'); 
     RETURN; 
    ELSE 
 
-- Сообщаем пользователю, какое количество записей будет 
-- экспортировано в Excel и предлагаем продолжить.  
-- Если пользователь нажимает кнопку Отменить, завершаем р
 
       vRecNUMBER := To_Char( nRecNUMBER) ; 
       Set_Alert_Property( 'SIGNAL2', ALERT_MESSAGE_TEXT, 
          vRecNumber|| 
            ' записей будут экспортированы в Excel. Продолжи');
       
       IF( Show_Alert( 'SIGNAL2') = ALERT_BUTTON2) THEN 
          RETURN; 
       END IF; 
    END IF; 
  
-- Экранный курсор -> песочные часы  
 
    Set_Application_Property( CURSOR_STYLE, 'BUSY'); 
 
-- Запускаем Excel. Если оставить окно Excel видимым,  
-- то при заполнении ячеек возникает неприятный эффект мельк
-- Поэтому выбираем свернутый режим запуска.  
 
    idApp := DDE.App_BEGIN( 
    'C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE TEXT_LIST.XLS',
        DDE.App_Mode_MINIMIZED); 
     
-- Открываем диалог DDE сервером Excel   
 
    idConv := DDE.Initiate('EXCEL.EXE', 'TEXT_LIST.XLS');
 
-- Оформляем индикатор выполнения. Он представляет из себя 
-- надпись "Экспорт в Excel ...", ниже которой находится дли
-- прямоугольник RECT_BAR, внутри которого движется цветная
-- полоска BAR. Вычисляем длину RECT_BAR, 

-- обнуляем BAR и переходим в блок индикатора. 
 
   -- barWidth := get_item_Property( 'RECT_BAR', WIDTH) - 2
    --Go_Block( 'BLK_CALC'); 
    -- Synchronize; 
  
-- Здесь начинается цикл чтения - записи. 
 
   FOR recDEBUGTBL IN curDEBUGTBL LOOP 
     
-- Для записи данных в Excel нам необходимы символьные данны
-- Кроме того, попытка передать NULL приводит к ошибке. 
-- С учетом этого переписываем прочитанные данные  
-- в локальные переменные. 
    
        IF recDEBUGTBL.TEXT IS NOT NULL THEN 
            vLocTEXT := recDEBUGTBL.TEXT; 
        END IF; 
   
        /*
        IF recSalary.Namet IS NOT NULL THEN 
            vLocNamet := recSalary.Namet; 
        END IF; 
   
        IF recSalary.Summ IS NOT NULL THEN 
             vLocSumm := To_Char( recSalary.Summ); 
        END IF; 
        */
         
-- Увеличиваем счетчик записей. 
-- Формируем адреса ячеек и записываем данные в таблицу Exce
-- Последний параметр в DDE.Poke это время ожидания в миллис
-- Значение по умолчанию - 1000. Его можно подобрать экспери
     
        i := i +  1 ; 
        rc1 := 'r'||To_Char(i)||'c1';  
        DDE.Poke( idConv, rc1, vLocTEXT, DDE.CF_TEXT,  2000 );
        
        /*
        rc2 := 'r'||To_Char(i)||'c2';  
        DDE.Poke( idConv, rc2, vLocNamet, DDE.CF_TEXT, 1000
        rc3 := 'r'||To_Char(i)||'c3';  
        DDE.Poke( idConv, rc3, vLocSumm, DDE.CF_TEXT, 1000
        */

-- Вычисляем новую длину цветной полоски в индикаторе выполн
 
--   set_item_property( 'BAR', WIDTH, barWidth * (i-1)
--   Synchronize; 
  
 END LOOP; -- конец цикла чтения - записи 
  
-- Завершаем работу подпрограммы 
 
    bErr := FALSE; 
    To_Complete; 
   
EXCEPTION 
 
--Обработка ошибок DDE 
 
    WHEN DDE.DDE_App_Failure THEN 
        vErrText := 'Ошибка при запуске приложения Excel.';
        To_Complete; 
    WHEN DDE.DDE_App_Not_Found THEN  
        vErrText :=  
          'Идентификатор приложения, заданный в вызове DDE.App_END'||
          ' или DDE.App_Focus не соответствует приложению, '||
          'выполняемому в настоящий момент.'; 
        To_Complete; 
     WHEN DDE.DDE_Fmt_Not_Found THEN  
        vErrText :=  
          'Идентификатор формата, заданный в вызове '|| 
          'DDE.Getformatstr неизвестен';
        To_Complete; 
    WHEN DDE.DDE_Fmt_Not_Reg THEN  
        vErrText :=  
          'Строка формата, заданная в вызове DDE.Getformatnum'||
          ' не соответствует ни одному из предопределенных форматов'||
          ' и не была зарегистрирована пользователем.';  
        To_Complete; 
    WHEN DDE.DDE_Init_Failed THEN  
        vErrText :=  
          'Приложение не может инициализировать DDE соединение;'||          
          ' обращение на уровень соединения с DDE вызывает сбой.';

        To_Complete; 
    WHEN DDE.DDE_Param_Err THEN  
        vErrText :=  
          'В пакетную программу DDE передан неверный параметр '||
          '(например, пустое значение).'; 
        To_Complete; 
    WHEN DDE.Dmlerr_Busy THEN  
        vErrText :=  
          'Сбой транзакции, поскульку сервер занят.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_Dataacktimeout THEN  
        vErrText :=  
          'Запрос на синхронную передачу данных выполнился ' ||
          'со сбоем из-за истечения времени ожидания.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_ExecackTimeout THEN  
        vErrText :=  
          'A request for a synchronous execute transaction has timed out.';
        To_Complete; 
    WHEN DDE.Dmlerr_Invalidparameter THEN  
        vErrText :=  
          'Неправильный параметр. Возможные причины:'|| 
          'приложение использовало указатель на данные инициализированные '||
          'с другим указателем или форматом данных буфера обмена, '||
          'чем требуется в транзакции. Приложение использовало неверный '||
          'идентификатор диалога. Более одного экземпляра приложения '||
          'использует один и тотже обьект.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_Memory_Error THEN  
        vErrText := 'Ошибка выделения памяти.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_No_Conv_EstablIShed THEN  
        vErrText :=  
          'Сбой при попытке установить диалог. '|| 
          'Возможно, ошибочно заданы имя сервиса или темы ' ||
          'при обращении к DDE.Initiate.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_Notprocessed THEN  
        vErrText :=  
          'Сбой транзакции. Возможно, ошибочно задано имя элемента '||
          'при обращении к процедуре DDE.Poke или DDE.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_Not_Supported THEN  
        vErrText :=  
          'Был сделан вызов пакета DDE, но DDE не поддерживает '||
          'данное программное обеспечение.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_Pokeacktimeout THEN 
        vErrText :=  
          'Сбой  в запросе на передачу данных из-за истечения '||
          'времени ожидания.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_Postmsg_Failed THEN  
        vErrText :=  
          'Сбой при внутреннем обращении к функцииe PostMessage.';
        To_Complete; 
    WHEN DDE.Dmlerr_Server_Died THEN   
        vErrText :=  
          'Сервер завершил работу, прежде чем транзакция была '||
          'полностью отработана.'; 
        To_Complete; 
    WHEN DDE.Dmlerr_Sys_Error THEN  
        vErrText :=  
          'Произошла внутренняя ошибка на уровне обмена данными.';
    
-- Обработка ошибок Oracle 
 
    WHEN OTHERS THEN 
        vErrText :=  
          ERROR_TYPE||'-'||TO_CHAR(ERROR_CODE)||': '||ERROR_TEXT||
          '     ORA-'||TO_CHAR(DBMS_ERROR_CODE)||': '||DBMS_ERROR_TEXT;
        To_Complete; 
END;
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36456411
AndrK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
last_dbaЛюди добрые помогите, подскажите как можно через формсы экспортировать данные в EXCEL.
Мне больше нравится такой вариант:
1.Из формсов генерим csv.
2.В EXCEL имеем шаблон, с макросом для отчёта, который наполовину сгенерён конструктором.
3.Через OLE запускаем Ёксель с этим шаблоном, и в нём вызываем макрос с параметрами.
4.Всё рисуется, макрос закрывает файл шаблона.
К такому варианту пришёл после
Forms Ole2 Array ??? ,
да и скорость на больших файликах побыстрее будет.
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36495075
можно использовать text_io для вывода в файл данных.
а выводить в разметке html с расширением .xls
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36504131
last_dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cпасибо всем! был в отпуске. теперь начнем экспорт.
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36505266
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по быстромуможно использовать text_io для вывода в файл данных.
а выводить в разметке html с расширением .xls

Или в разметке XML SS

http://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36510544
easymod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В своё время помогла эта статья.
...
Рейтинг: 0 / 0
ORACLE FORMS 6- EXCEL
    #36512391
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://sql.ru/forum/actualthread.aspx?tid=128620#7700646
попробуйте, будет работать
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / ORACLE FORMS 6- EXCEL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]