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

а чего делать если не хватает 32000

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Настройка и сопровождение
Предыдущая тема :: Следующая тема  
Автор Сообщение
.СергейПанин
Участник - экстремал


Вступление в Клуб: 24.06.2008
СообщениеСр Июл 07, 2010 17:20   а чего делать если не хватает 32000 Ответить с цитатой
Полезность: Нет оценки
Коллеги доброе время суток, подскажите советом - формирую EXCEL файл и переменной для формирования скрипта не хватает... вроде бы и отчет не большой.. но не хватает...
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеЧт Июл 08, 2010 07:27    Ответить с цитатой
Полезность: 4
В валидаторе
Код:
   elsif P_MESSAGE = 'VALIDATE' then
      if P_INFO = 'OK' then
         P_INFO := 'Печать в Excel';   
      end if;   
      if p_info = 'Печать в Excel' then
          if EXCEL.F_Click then
             createkvits(this);
             excel.f_click   := false;
          end if;
          If EXCEL.Exec_Script(V_EXCEL_STR) = 'DONE' Then
            &debug('Вывод данных в excel завершен', 0)
         End If;   
       end if;      
   end if;


Код:
   function createkvits() return boolean
is
begin
   --открываем шаблон
   excel.open_file(''), false);
   --Пишем что-то excel
   excel.Write(2,1,'!!!');
   --Сохраняем   
   excel.Save_As('');
   --Показываем
   excel.visible;
   excel.release;
end;   


В клиент-скрипте

Код:
Public Sub Exe
   Do
      Execute V_EXCEL_STR.Text
      V_EXCEL_STR.Text = ""
      Call Runtime.ServerValidate(PrintXL, "Печать в Excel")
   Loop While   V_EXCEL_STR.Text <> ""   
End Sub

Public Function Main(LastControl)
   If LastControl Is Nothing Then
      ' Действия при загрузке формы
             
   Elseif LastControl Is Ok then
      ' Действия при потере фокуса валидируемого контрола LastControl
      Do
         Execute V_EXCEL_STR.Text
         V_EXCEL_STR.Text = ""
         Call Runtime.ServerValidate(PrintXL, "Печать в Excel")
      Loop While   V_EXCEL_STR.Text <> ""   
      End If
   Main = True 'Результат валидатора (True, False, NULL)   
End Function


VBScript-код который формируется, при createkvits(this) хранится не в V_EXCEL_STR, а в специальной таблице. EXCEL.Exec_Script(V_EXCEL_STR) вычитывает из таблицы логически завершенный кусок в переменную V_EXCEL_STR, и отдает на выполнение скрипту Execute V_EXCEL_STR.Text. Скрипт же в свою очередь снова дергает валидатор и т. д.
Pauls
Участник со стажем


Вступление в Клуб: 16.11.2011
СообщениеСр Фев 26, 2014 16:08    Ответить с цитатой
Полезность: Нет оценки
тоже столкнулись с данной проблемой. Имеем таблицу с 7000 записей.
Код пробегает по этим записям за 2 минуты, а вот вывод в Эксель занимает минут 20.
Коллеги, подскажите, пожалуйста, можно ли как ускорить выгрузку в эксель?
Amper
Профи


Вступление в Клуб: 29.10.2010
СообщениеЧт Фев 27, 2014 02:43    Ответить с цитатой
Полезность: Нет оценки
Pauls пишет:
тоже столкнулись с данной проблемой. Имеем таблицу с 7000 записей.
Код пробегает по этим записям за 2 минуты, а вот вывод в Эксель занимает минут 20.
Коллеги, подскажите, пожалуйста, можно ли как ускорить выгрузку в эксель?

http://www.cftclub.ru/viewtopic.php?t=3403
В скором времени excel-файлы можно будет формировать на серверной стороне в формате OOXML и по скорости формирования больших файлов этот способ будет выигрывать значительно, так что просто немного подождите.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеЧт Фев 27, 2014 05:37    Ответить с цитатой
Полезность: Нет оценки
Pauls пишет:
тоже столкнулись с данной проблемой. Имеем таблицу с 7000 записей.
Код пробегает по этим записям за 2 минуты, а вот вывод в Эксель занимает минут 20.
Коллеги, подскажите, пожалуйста, можно ли как ускорить выгрузку в эксель?


Используйте excel.Put и excel PrintArray;
вместо excel.write
Pauls
Участник со стажем


Вступление в Клуб: 16.11.2011
СообщениеСр Мар 05, 2014 11:08    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
Pauls пишет:
тоже столкнулись с данной проблемой. Имеем таблицу с 7000 записей.
Код пробегает по этим записям за 2 минуты, а вот вывод в Эксель занимает минут 20.
Коллеги, подскажите, пожалуйста, можно ли как ускорить выгрузку в эксель?


Используйте excel.Put и excel PrintArray;
вместо excel.write

Спасибо большое. Ускорилось в разы. А такой вопрос - можно ли при этом использовать Excel.Border? Пробую - ячейки не прорисовывает!
Делал Excel.Border (...)
Excel.Print_Array и наоборот - не работает Sad
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеЧт Мар 06, 2014 02:29    Ответить с цитатой
Полезность: Нет оценки
Pauls пишет:

Спасибо большое. Ускорилось в разы. А такой вопрос - можно ли при этом использовать Excel.Border? Пробую - ячейки не прорисовывает!
Делал Excel.Border (...)
Excel.Print_Array и наоборот - не работает Sad



Попробуйте сначала
Excel.Print_Array
потом
Excel.Borders()
хотя есть и обратные примеры...

Например операция
Статистика по сообщениям в ФСФМ
Z$SEARCH_R_STAT
Печать справки о бухгалтерских документах, хранение которых осуществляется в электронном виде
Z$EARCHIVE_PRINT_REGISTR
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Настройка и сопровождение Часовой пояс: GMT + 3
Страница 1 из 1

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