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

Печать в Excel
На страницу Пред.  1, 2, 3  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Апр 18, 2008 07:55    Ответить с цитатой
Полезность: Нет оценки
belyansky пишет:
кстати примечания через "вставка -> примечание" удобнее вставлять, а через "вид - > примечания" можно включить отображение всех примечаний

dnk_dz пишет:

Может быть. Просто я делал загрузку данных из Excel именно через именованные ячейки.

а можно узнать как просматривать имя ячейки после присвоения???

Имя ячейки отображается в верхнем левом углу окна (под панелью инструментов) в поле с выпадающим списком. В этом же поле можно и присвоить имя ячейки. А через выпадающий список можно перемещаться к указанной ячейке.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПт Окт 30, 2009 16:19    Ответить с цитатой
Полезность: Нет оценки
Доброго времени суток, Уважаемые коллеги!
подскажите можно ли программно, каким либо образом осущетвить выгрузку отчета в Excel, без вызова РЭФ операции осуществляющей выгрузку?
т.е. грубо говоря програмно вызвать операцию выгрузки из другой операции
_________________
всегда есть как минимум 2 выхода
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеПт Окт 30, 2009 16:29    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
Доброго времени суток, Уважаемые коллеги!
подскажите можно ли программно, каким либо образом осущетвить выгрузку отчета в Excel, без вызова РЭФ операции осуществляющей выгрузку?
т.е. грубо говоря програмно вызвать операцию выгрузки из другой операции
Думаю нужно эмулировать нажатия на кнопку формирования отчета и "OK". Либо только "ОК", но по событию нажатия на ок должно вызываться вормирование Excelя
_________________
I Lie About Everything.
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПт Окт 30, 2009 16:33    Ответить с цитатой
Полезность: Нет оценки
а как эмулировать это нажатие?
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеПт Окт 30, 2009 16:55    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
а как эмулировать это нажатие?

Передать соответствующий текст в переменную текст которой исполняется в клиент-скрипте.
Например
Код:
call Form1.ScriptPostEvent(BTN_OK,"CLICK")

_________________
I Lie About Everything.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеСб Окт 31, 2009 02:10    Ответить с цитатой
Полезность: Нет оценки
w00per пишет:
prog пишет:
а как эмулировать это нажатие?

Передать соответствующий текст в переменную текст которой исполняется в клиент-скрипте.
Например
Код:
call Form1.ScriptPostEvent(BTN_OK,"CLICK")


ну это конечно все замечательно, вот только форма не понимается, следовательно клиентская часть скрипта не работает... проблема в этом... или я что то путаю?
_________________
всегда есть как минимум 2 выхода
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПн Ноя 02, 2009 06:21    Ответить с цитатой
Полезность: 1
У нас сделано так. Есть операция, которая вызывает формирование отчета в Excel. В теле делаем вызов:

Код:
stdio.put_line_buf('<%CALL KOU_PF_RSTSEND SEND2EXCEL '||rec%id||'%>');


Операция, которая формирует Excel-файл ничем не отличается от обычной операции вывода отчета в Excel. В валидаторе:

Код:
if P_INFO = 'OK' then
  if excel.f_click then
  ...


все как обычно, только в свойствах операции стоит признак "Не отображать экранную форму операции".
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеПн Ноя 02, 2009 06:33    Ответить с цитатой
Полезность: 1
dnk_dz пишет:

все как обычно, только в свойствах операции стоит признак "Не отображать экранную форму операции".


Да, с этим крыжом ЭФ не показывается, но валидаторы отрабатывают по сценарию
1. Показалась форма.
2. Нажата кнопка ОК.
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеПн Ноя 02, 2009 09:23    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
Код:
call Form1.ScriptPostEvent(BTN_OK,"CLICK")
ну это конечно все замечательно, вот только форма не понимается, следовательно клиентская часть скрипта не работает... проблема в этом... или я что то путаю?
Если бы не отрабатывала клиентская часть, то как бы происходила эмулюция нажатия на кнопку?![/quote]
З.Ы. Вариант уважаемого dnk_dz более изящьный, но может оказаться менее гибким для выполнения доп. действий.
_________________
I Lie About Everything.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПн Ноя 02, 2009 10:12    Ответить с цитатой
Полезность: Нет оценки
dnk_dz пишет:
Операция, которая формирует Excel-файл ничем не отличается от обычной операции вывода отчета в Excel. В валидаторе:

Код:
if P_INFO = 'OK' then
  if excel.f_click then
  ...


все как обычно, только в свойствах операции стоит признак "Не отображать экранную форму операции".


я сдел все точно также.. просто операция работает по массиву... переменная Dest заполняется, НО сам excel по окончении работы операции не запускается.. если запустить операцию ручками и нажать на форме на кнопку ОК, то, о чудо, все работает как часы.. у меня сложилось устойчивое мнение, что не запускается клиент скрипт... и как его запустить программно, для меня, честно говоря, пока загадка
_________________
всегда есть как минимум 2 выхода
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеПн Ноя 02, 2009 10:21    Ответить с цитатой
Полезность: Нет оценки
Тогда сложнее, не видя...
Перед запуском ручками ты у этой операции снимаешь крыж "Не отображать ЭФ"?
Попробуй запустить ее руками, не снимая этот крыжик.

Покажи, как вызываешь операцию.
Текст самой операции.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеВт Ноя 03, 2009 15:01    Ответить с цитатой
Полезность: Нет оценки
текст функции
Код:
procedure auto_valid(p_message varchar2(100),
                p_info varchar2(1000),
                p_date date,
                p_nr integer,
                p_acc string(20),
                v_dest string(32000),
                v_file string(32000)
               ) is
               
begin

  if P_MESSAGE = 'DEFAULT' then
     EXCEL.Init_XLS;
     tmp_date := to_char(p_date, 'DD.MMMM.YYYY');
     tmp_nr := p_nr;
     tmp_acc := p_acc;
     v_file := [REPS]::[SLIB].GetPath('PATH_PRINT_EXCEL', 'print_r.xlt');
       if list_docs is not null then
      p_message := 'VALIDATE';
      p_info:='OK';
       else
          pragma error ('Документы в рейс не найдены!!!');
    end if;
   end if;


   if P_MESSAGE = 'VALIDATE' then
      if P_INFO = 'OK' then
       
         if excel.f_click then
            excel.f_click   := false;
            --debug_pipe('>>> Подготовка отчета для вывода в Excel...'
            --   ||LF$||'>>> Пожалуйста, подождите...', 0);
            excel.open_file(v_file);
            get_doc_list(tmp_date, tmp_nr, tmp_acc);
            excel.release;
            excel.visible;
         end if;
         EXCEL.Exec_Script(v_dest);
        -- debug_pipe(v_dest);
      end if; -- p_info
   end if; -- p_messge
End;

_________________
всегда есть как минимум 2 выхода
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеВт Ноя 03, 2009 16:25    Ответить с цитатой
Полезность: Нет оценки
Проверки, я надеюсь, установлены (Сервер, Клиент)?
Валидация кнопки ОК включена?(А вдруг, все мы люди...)
Попробуй код из условия
Код:
if P_MESSAGE = 'DEFAULT' then

перенести в
Код:
if P_MESSAGE = 'VALIDATE' then
      if P_INFO = 'OK' then

_________________
I Lie About Everything.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеВт Ноя 03, 2009 21:48    Ответить с цитатой
Полезность: Нет оценки
w00per пишет:
Проверки, я надеюсь, установлены (Сервер, Клиент)?
Валидация кнопки ОК включена?(А вдруг, все мы люди...)
Попробуй код из условия
Код:
if P_MESSAGE = 'DEFAULT' then

перенести в
Код:
if P_MESSAGE = 'VALIDATE' then
      if P_INFO = 'OK' then

Согласен, все мы люди.. валидация там где надо поставлена... проверки все выставлены...я уже по разному пробовал.. но вот не работает клиент скрипт, если операцию печати в Excel вызывать программноSad
_________________
всегда есть как минимум 2 выхода
w00per
Профи


Вступление в Клуб: 17.10.2007
СообщениеЧт Ноя 05, 2009 09:47    Ответить с цитатой
Полезность: 1
Быстренько накидал пару операций одна из которой вызывает вторую, вторая что-то там выполняет и жмет кнопку "ОК".
1-я Test
Код:
Блок "ТЕЛО"
begin
   stdio.put_line_buf('<% PLPCALL [KOB_KASSES].[TEST2](%VAR%.V_VB => ''call Form1.ScriptPostEvent(Ok,"CLICK")'')%>');
end;

2-я Test2
Код:
Блок "ТЕЛО"
begin
   debug_pipe('8'||V_VB, 10);
   debug_pipe('V_VB = '||V_VB, 10);
   debug_pipe('9'||V_VB, 10);
end;

Блок "ПРОВЕРКА"
begin
   if P_MESSAGE = 'DEFAULT' then
      debug_pipe('1', 10);
      debug_pipe('V_VB = '||V_VB, 10);
      debug_pipe('2', 10);
   end if;
   if P_MESSAGE = 'VALIDATE' then
      debug_pipe('3', 10);
      if P_INFO = '%PLPCALL%' then
         debug_pipe('4', 10);
            debug_pipe('V_VB = '||V_VB, 10);
            debug_pipe('5', 10);
      end if;
      if P_INFO = 'OK' then
         debug_pipe('6', 10);
         debug_pipe('V_VB = '||V_VB, 10);
         debug_pipe('7', 10);
      end if;
   end if;
end;

Блок "КЛИЕНТ-СКРИПТ"
Public Function Main(LastControl)
   MsgBox V_VB.Text
   
   Execute V_VB.Text
   V_VB.Text = ""

   Main = True ' Результирующее значение валидатора (True или False)   
End Function


Запускаю Test жму "ОК" и вижу лог+периодические сообщения
Цитата:
09:34:14
1
V_VB =
2
09:34:16
3
4
V_VB = call Form1.ScriptPostEvent(Ok,"CLICK")
5
09:34:33
3
6
V_VB =
7
09:34:38
8
V_VB =
9


Как видим все отработало на ура.
З.Ы. переменная V_VB вынесена на форму и у нее выставлено свойство "CheckValidate".
_________________
I Lie About Everything.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3  След.
Страница 2 из 3

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