Вызов отчета из своего интерфейса.

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Вызов отчета из своего интерфейса.

Сообщение s2176 »

Добрый день!
Есть интерфейс, который читает таблицу Sumvidop, проверяет кореектность информации в ней и в случае обнаружения ошибок должен выдать отчет о них.
Вроде работает, но мне не нравится, что окно с предложением выбрать отчет появляется не в конце, а сразу, как только обнаруживается первая ошибка. Можно ли так сделать, чтобы интерфейс пробежал всю таблицу, и только в конце (при наличии ошибок) выдал окно для выбора отчета?
У меня написано примерно так:

interface Nach_Or 'Выгрузка начислений' escclose;
create view
....
form oraclen('or_nach.txt');

screen Sc1
...
end;

HandleEvent
cmOk:
{
...
tp._loop sumvidop
{
...
if j>0 and _bklass='_' and tp.sumvidop.summa<>0
{
oraclen.write(tp.sumvidop.tabn);
oraclen.write(tp.sumvidop.vidopl);
oraclen.write(sd);
oraclen.write(Ошибка!!!');
priz_error:=1;
}
...
} // tp.loop
if priz_error>0 then oraclen.showfile('oracle.txt');
}
end;
end.
Кто сказал, что бесполезно биться головой об стену?!
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

1. Сначала собрать все ошибки во временную таблицу, а потом из нее выводить в отчет.
2. Использовать метод NoDialog, который
подавляет вызов окна выбора форм и исполняет все отчеты из списка отчетов формы
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Во временную, конечно можно, но не хочется, а с nodialog почему-то не получается((
Я вставила в интерфейс перед oraclen.write()
oraclen.nodialog;

В форме в конце вставила:
.begin oraclen.fexit
end.

Но не помогает((( Все равно запрос выдается сразу.
Кто сказал, что бесполезно биться головой об стену?!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

Правило хорошего тона - запросить сразу список отчетов.
типа сделать вначале
oraclen.reinit
if oraclen.error
{ abort;
exit;
}
если форма одна и fcenv=off то и запроса не будет.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

форма пока одна, но, может, еще придется присоединять.

Перед _loop'ом вставила:

oraclen.reinit
if oraclen.error
{ abort;
exit;
}
oraclen.nodialog;

Но, увы, ничего не изменилось(((
Кто сказал, что бесполезно биться головой об стену?!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Тут нужно, видимо, знать как устроен устроен этот кусок атлантиса.
Если сделано так, что системе нужно знать заранее в каком виде выводить инфу (по какому Вами созданному linkform) то значит он будет спрашивать сначала по какой форме формировать отчет.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Т.е., если я вас правильно поняла, победить это нельзя, выход один - использовать временную таблицу?
Кто сказал, что бесполезно биться головой об стену?!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Ну может и можно как то )
Screw или LaaLaa может подскажут, если это возможно.
Но вообще вроде всегда вначале форму спрашивало. Не вижу в этом особого неудобства. Для Вас чем так принципиально чтобы вконце запрашивало ее ?
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

NoDialog д. б. после ReInit, но перед Error.

Еще такой момент. Сам не проверял, но, возможно, если задан Forms.FCEnv=On, то NoDialog не сработает (при стандартном Off проверено и срабатывает).
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а вы уверены что запрос пошел после ошибки? после моего куска вставте мессагу. Того ведь и добиваемся что появился не спустя полчаса а сразу.
NoDialog д. б. после ReInit, но перед Error
тоже справедливо. К появлению списка должно привести oraclen.error
да ReInit здесь привел исключительно для обработки некоректного програмирования когда при по концевке не делается showfile или abortform - тогда reinit дает возможность нормально перестроить отчет.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

Сделал после ReInit, но перед Error.
interface Nach_Or 'Выгрузка начислений' escclose;
create view
....
form oraclen('or_nach.txt');

screen Sc1
...
end;

HandleEvent
cmOk:
{
...
oraclen.reinit;
oraclen.nodialog;
if oraclen.error { abort; exit; }

tp._loop sumvidop
{
...
if j>0 and _bklass='_' and tp.sumvidop.summa<>0
{
oraclen.write(tp.sumvidop.tabn);
oraclen.write(tp.sumvidop.vidopl);
oraclen.write(sd);
oraclen.write(Ошибка!!!');
priz_error:=1;
}
...
} // tp.loop
if priz_error>0 then oraclen.showfile('oracle.txt');
}
end;
end.

Ничего не изменилось(((
Похоже, придется временную таблицу делать.
Кто сказал, что бесполезно биться головой об стену?!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а мессагу перед loop?
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

Не поленился, проверил. Настройка Forms.FCEnv=On более значима, чем NoDialog, т. е. при включенной настройке окно выбора появляется, несмотря на NoDialog. При выключенной настройке окна выбора нет. Если у вас оно всё равно появляется - есть какая-то причина. Выкладывайте весь текст, может, общими усилиями что-то найдем.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

Сообщение s2176 »

сообщение выскакивает ПОСЛЕ окна выбора отчета.
Выключать настройку я не хочу((
Буду делать временную таблу.
Кто сказал, что бесполезно биться головой об стену?!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

ну так этого и добивались - все нормально.Смысл в том чтобы человек запустил отчет и пошел пить кофе - пришел а уже все сформировалось и не надо нажимать чего то еще и ждать еще несколько минут. К тому же у пользователя fcenv = off обычно включено.
Ответить