В интерфейсе формируется несколько отчетов, последовательно друг за другом. После того как сформирован первый начинется расчет второго (занимает какоето время, примерно час), потом следующий. Отчеты не выводятся на экран, а просто складываются в определенную папку. В шедулере настроил проверку этой папки и если там появляется файлы отчетов то они копируются по сети определенным пользователям, с удалением из текущей папки. Все это дело вызывается в автоматическом режиме по расписанию.
Теперь сам вопрос.
Описываю в начале все формы
Form form1('OUT\%USER%\form1.slk') With NoVisual;
Form form2('OUT\%USER%\form2.xls') With NoVisual;
Form form3('OUT\%USER%\form3.xls') With NoVisual;P
Затем идут процедуры расчета.
После того как сформирован первый отчет делаю
form1.PutEvent(feBreak);
Затем вызывается процедура расчета следующего отчета и так по порядку.
Так вот после того как появился первый отчет form1 его не возможно открыть (и тем более переместить из текущей папки), т.е. он заблокирован до конца работы программы.
Сделал вывод всех отчетом одновременно в конце программы, одним махом, но такой вариант не очень удобен тем что приходится ждать пока не отработают все процедуры.
Может быть кто подскажет как выйти из такой ситуации.
Последовательный вывод отчетов
Модераторы: m0p3e, edward_K, Модераторы
Re: Последовательный вывод отчетов
Сам не пробовал, но по описанию вроде подходит:
Делаем сразу после feBreak.
Код: Выделить всё
Метод PrepareOutFile
Назначение
Функция готовит отчет к печати, не показывая его.
Описание
procedure PrepareOutFile : boolean;
Результат
Функция возвращает логическую истину true, если операция прошла успешно.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Последовательный вывод отчетов
Ну если фейс ваш, то можно и form1.abortform сделать.
Re: Последовательный вывод отчетов
Сделайте 3 интерфейса каждый с 1 отчетом. И запускайте их по-очереди из четвертого.