Добрый день!
Проблема такая:
Есть достаточно сложный ard-отчет. Нужна возможность его прервать.
.form errpo_xls
.ard
...
startNewVisual(vtRotateVisual,vfBreak+vfConfirm+vfTimer+vfThread,'Выгружаю отпуска.....',100);
...
.{ table t1
..
if NextVisual()=false { stopVisual('',0); errpo_xls.fbreak; }
..
.}
.endforn
При нажатии кнопки "Прервать" визуализация прерывается, но на экране остается окно "Формирование Х отчета", которое я никаким образом не могу снять.
Не получается прервать выполнение отчета
Модераторы: m0p3e, edward_K, Модераторы
Не получается прервать выполнение отчета
Кто сказал, что бесполезно биться головой об стену?!
Re: Не получается прервать выполнение отчета
Может быть, fexit лучше вместо fbreak? Либо вот так попробовать:
Код: Выделить всё
errpo_xls.fexit;
exit;
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Не получается прервать выполнение отчета
И уж лучше restartvisual чем start - stop. У вас визуализация, что осталось на экране просто не знает, что ее прервали.
Если же делаете так, то уж сделайте цикл while и выйдите из него по какой нибудь переменной - чтобы отчет нормально заверщил свою работу.
Возможно в месте вызова ард отчета имеет сделать
if visualisationactive then stopvisual('',0).
А лучше делать на vip или FastReport.
Если же делаете так, то уж сделайте цикл while и выйдите из него по какой нибудь переменной - чтобы отчет нормально заверщил свою работу.
Возможно в месте вызова ард отчета имеет сделать
if visualisationactive then stopvisual('',0).
А лучше делать на vip или FastReport.
Re: Не получается прервать выполнение отчета
errpo_xls.fexit; exit; - не помогает.
Проблема, похоже, в том, что внутри цикла по таблице t1 есть еще дюжина вложенных циклов по другим таблицам.
Когда я nextvisual вставила во все циклы, тогда визуализация прервалась, хотя Гал-ка еще какое-то время продолжала что-то делать, т.е. была недоступна для пользователя.
Если я все это переложу в vip, не возникнет ли там такая же проблема?
Проблема, похоже, в том, что внутри цикла по таблице t1 есть еще дюжина вложенных циклов по другим таблицам.
Когда я nextvisual вставила во все циклы, тогда визуализация прервалась, хотя Гал-ка еще какое-то время продолжала что-то делать, т.е. была недоступна для пользователя.
Если я все это переложу в vip, не возникнет ли там такая же проблема?
Кто сказал, что бесполезно биться головой об стену?!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Не получается прервать выполнение отчета
Код: Выделить всё
.var
wkl:boolean;
.endvar
.begin
wkl:=(t1.getfirst table0=0)
end.
.{ while wkl
.....
.begin
wkl:=(t1.getnext table=0)
if not nextvisual wkl:=false
end.
.} // while wkl
Fcom же заточен под управлениями событиями на vip. В нем самом обрабатывать прерывание не очень удобно, хотя и на vip использование переменой для информации о прерывании тоже полезно.
Re: Не получается прервать выполнение отчета
Пришлось превратить отчет в интерфейс, теперь прерывание отрабатывает нормально.
Спасибо!
Спасибо!
Кто сказал, что бесполезно биться головой об стену?!