CftClub.ru
Клуб специалистов ЦФТ-Банк

Выгрузка данных в EXCEL

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Псевдоним123
Участник - экстремал


Вступление в Клуб: 05.06.2018
СообщениеВт Июн 05, 2018 11:12   Выгрузка данных в EXCEL Ответить с цитатой
Полезность: Нет оценки
доброго времени суток.
подскажите, пожалуйста, всю голову сломал...
при выгрузке данных в Excel не открывается файл...

валидно все

Код:
   if p_message = 'DEFAULT' then
      
      V_DEST := null;
      ::[RUNTIME].[EXCEL].INIT_XLS;
      p_info := 'OK';
   elsif p_message = 'VALIDATE' then
      if  p_info = 'OK' then
         if ::[RUNTIME].[EXCEL].F_CLICK then
               [EXCEL].F_CLICK := false;
            ::[RUNTIME].[EXCEL].open_file (::[REPS].[SLIB].GetPath('PATH_PRINT_EXCEL', 'SVB_PRS_REP_ACT_NEW.xlt'), false);      
            
            Draw(P_BEG_DATE);
            ::[RUNTIME].[EXCEL].VISIBLE;
            ::[RUNTIME].[EXCEL].RELEASE;
         end if;
         ::[RUNTIME].[EXCEL].EXEC_SCRIPT (V_DEST);
      end if;
   end if;
end;



[code]Procedure Draw(P_BEG_DATE date)
is
iRow integer;
Row integer;
i number:=0;

begin



::[RUNTIME].[EXCEL].Open_Sheet(1);
::[RUNTIME].[EXCEL].write(2, 4, ' на ' || to_char(P_BEG_DATE, 'dd.mm.yyyy') );
debug_pipe('Текст '||to_char(P_BEG_DATE, 'dd.mm.yyyy'), 0);
iRow := 5;
for
(select u(
(select cc(nvl(substr(ltrim(cc.[name]), 1, INSTR(cc.[name], 'фил')-1), 'ПАО АКБ "СВЯЗЬ-БАНК" Головной Офис'))
in [SALARY_PLACE_NAS] where cc.[code] = br.[code]) : name_filial --филиал
, u.[NAME] : NAME --ФИО
, u.[NUM_TAB] : NUM_TAB --Табельный номер
, to_char(u.[BEG_DATE], 'dd.mm.yyyy') : BEG_DATE --дата приема
, to_char(u.[END_DATE], 'dd.mm.yyyy') : END_DATE --дата увольнения
, d1.[name] : c_name_dep --наименование подразделения по штату
, d1.[CODE_ORG] : C_CODE_ORG --код оргструктуры

--, (select q1(q1.[name]) in [depart] where q1%id=u.[depart]) : c_name_dep --наименование подразделения по штату
--, (select q1(q1.[CODE_ORG]) in [depart] where q1%id=u.[depart]) : C_CODE_ORG --код оргструктуры
--, sp.c_code --код оргструктуры
, sp.[name] : c_name_filial_zp --филиал

, (select td(td.[NAME])
in [ACT_TYPE_DOL], ([PRS_ACT_TYPE] all : tc)
where tc%collection = u.[ACT_TYPE_DOL] and tc.[ACT_TYPE] = td%ID and rownum=1) : C_NAME_position --направление деятельности
, (select tc(nvl(tc.[KOEF], 1))
in [PRS_ACT_TYPE] ,([ACT_TYPE_DOL] all : td)
where tc%collection = u.[ACT_TYPE_DOL] and tc.[ACT_TYPE] = td%ID and rownum=1) : c_koeff --доля направления деятельности

--, td.C_NAME C_NAME_position --напрвление деятельности
--, nvl(tc.C_KOEF, 1) as c_koeff
)
IN [USER],
([DEPART] all : d1),
([SALARY_PLACE_NAS] all : sp),
([SALARY_USER_INFO] all : su),
([BRANCH] all : br)
where u.[DEPART] = d1%ID
--and tc.collection_id = u.C_ACT_TYPE_DOL and tc.C_ACT_TYPE = td.ID
and
u%id = su.[USER]
and su.[SALARY_PLACE_NAS] = sp%ID
and u.[filial] = br%id
and u.[END_DATE] is null
and u.[BEG_DATE] <= to_char(P_BEG_DATE, 'dd.mm.yyyy')
--and d1.[code] = '044-30'
--and rownum < 50
order by d1.[code], u.[name] asc
)
loop

::[RUNTIME].[EXCEL].put(iRow, 1, u.[name_filial]);
::[RUNTIME].[EXCEL].put(iRow, 2, u.[NAME]);
::[RUNTIME].[EXCEL].put(iRow, 3, u.[NUM_TAB]);
::[RUNTIME].[EXCEL].put(iRow, 4, u.[BEG_DATE]);
::[RUNTIME].[EXCEL].put(iRow, 5, u.[END_DATE]);
::[RUNTIME].[EXCEL].put(iRow, 6, u.[c_name_dep]);
::[RUNTIME].[EXCEL].put(iRow, 7, u.[C_CODE_ORG]);
::[RUNTIME].[EXCEL].put(iRow, 8, u.[c_name_filial_zp]);
::[RUNTIME].[EXCEL].put(iRow, 9, u.[C_NAME_position]);
::[RUNTIME].[EXCEL].put(iRow,10, u.[c_koeff]);

iRow := iRow + 1;
end loop;
::[RUNTIME].[EXCEL].print_array;
::[RUNTIME].[EXCEL].Borders(6,1,iRow-1,19,'HVLBTR',2);
end;
[/code]

подскажите где я туплю....
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Июн 05, 2018 11:18    Ответить с цитатой
Полезность: 1
на кнопке ОК валидация установлена ?

а вообще попробуй перенести запуск из тела операции как писал уважаемый kai

http://cftclub.ru/viewtopic.php?t=2751&highlight=%EE%F2%F7%E5%F2+excel

p.s.
'ПАО АКБ "СВЯЗЬ-БАНК" посвящается

кто тут кодит, в снег и в грязь ?!
НАША ДОБЛЕСТНАЯ СВЯЗЬ ! Smile))
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеВт Июн 05, 2018 11:39   Re: Выгрузка данных в EXCEL Ответить с цитатой
Полезность: Нет оценки
Псевдоним123 пишет:
доброго времени суток.
подскажите, пожалуйста, всю голову сломал...
при выгрузке данных в Excel не открывается файл...

подскажите где я туплю....


А выведи в конце в дебаг V_DEST

debug_pipe(V_DEST,0);

и посмотри скрипт в мониторе что там в конце...
Псевдоним123
Участник - экстремал


Вступление в Клуб: 05.06.2018
СообщениеВт Июн 05, 2018 11:44    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
да, на кнопке ОК валидация установлена
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Июн 05, 2018 11:45    Ответить с цитатой
Полезность: Нет оценки
Обычно про переменную DEST в скрипте забывают.
Псевдоним123
Участник - экстремал


Вступление в Клуб: 05.06.2018
СообщениеВт Июн 05, 2018 11:49    Ответить с цитатой
Полезность: Нет оценки
DEST присутствует

Код:
  if p_message = 'DEFAULT' then
       
      V_DEST := null;
      ::[RUNTIME].[EXCEL].INIT_XLS;
      p_info := 'OK';
   elsif p_message = 'VALIDATE' then
      if  p_info = 'OK' then
         if ::[RUNTIME].[EXCEL].F_CLICK then
               [EXCEL].F_CLICK := false;
            ::[RUNTIME].[EXCEL].open_file (::[REPS].[SLIB].GetPath('PATH_PRINT_EXCEL', 'SVB_PRS_REP_ACT_NEW.xlt'), false);       
             
            Draw(P_BEG_DATE);
            ::[RUNTIME].[EXCEL].VISIBLE;
            ::[RUNTIME].[EXCEL].RELEASE;
         end if;
         ::[RUNTIME].[EXCEL].EXEC_SCRIPT (V_DEST);
      end if;
   end if;
end;
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Июн 05, 2018 11:53    Ответить с цитатой
Полезность: Нет оценки
А в Клиент-скрипте?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Июн 05, 2018 11:59    Ответить с цитатой
Полезность: Нет оценки
Volod пишет:
А в Клиент-скрипте?


и еще в доп. свойствах Проверки должны с Клиентом выставлены

Клиент, Сервер
Клиент, Сервер

в общем чтобы и Сервер и Клиент в обоих фигурировали в какой то комбинации

а то клиент-скрипт не отработает с валидации
Псевдоним123
Участник - экстремал


Вступление в Клуб: 05.06.2018
СообщениеВт Июн 05, 2018 12:10    Ответить с цитатой
Полезность: Нет оценки
в Клиент-скрипте

Код:
Public Function Main(LastControl)
   If LastControl is OK and  Dest.Text <> "" Then
      DO
         Execute Dest.Text
         Call Form1.ScriptServerValidate( OK, "OK")
      Loop While   Dest.Text <> ""
   End If
   
   Main = True 'Результат валидатора (True, False, NULL)   
End Function
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Июн 05, 2018 12:35    Ответить с цитатой
Полезность: Нет оценки
у V_DEST идентификатор DEST?
Псевдоним123
Участник - экстремал


Вступление в Клуб: 05.06.2018
СообщениеВт Июн 05, 2018 12:37    Ответить с цитатой
Полезность: Нет оценки
да
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Июн 05, 2018 13:05    Ответить с цитатой
Полезность: Нет оценки
1. Сохраните скрипт vbs на диск - запустите.
2. Поставьте отладку MS script.
Псевдоним123
Участник - экстремал


Вступление в Клуб: 05.06.2018
СообщениеВт Июн 05, 2018 13:16    Ответить с цитатой
Полезность: Нет оценки
v_dest с формы теперь пропала...
(в описании переменных v_dest есть)
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Июн 05, 2018 14:14    Ответить с цитатой
Полезность: Нет оценки
Цитата:
v_dest с формы теперь пропала...

v_dest должна быть на форме с идентификатором DEST.
B 12:37 Вы ответили - что так оно и есть - где же Вы это увидели?
Псевдоним123
Участник - экстремал


Вступление в Клуб: 05.06.2018
СообщениеВт Июн 05, 2018 14:54    Ответить с цитатой
Полезность: Нет оценки
спасибо всем за подсказки, поочередно посмотрев и проверив все Ваши умные мысли все заработало.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru