Страница 1 из 1

Виснет отчет

Добавлено: 16 июл 2009, 20:54
Larisa
Подскажите пожалуйста виснет отчет, из-за чего непонятно.
Смысл отчета по каждой spkau будет некий набор stzatr с данными tab25 внутри.
Есть две вьюшки.
.Create View m //
from spkau
where ((
10013<<=spkau.kodgrkau
and 10036>>=spkau.kodgrkau
))
order by spkau.kodgrkau,spkau.code
;
.create view n from tab_25, stzatr
where ((
stzatr.nrec == tab_25.stkau3
and spkau_nrec == tab_25.ckau
));

Вывод в отчет осуществляется таким образом
if m.getfirst spkau = tsok {message('есть данные spkau')}
.{table 'm.spkau'
spkau_nrec := m.spkau.nrec;
if n.getfirst stzatr = tsok {message('есть данные stzatr')}
else message('нет данных stzatr');
.{table 'n.stzatr'
.{table 'n.tab_25'
...... подсчеты сумм по данной stzatr и spkau
.}
вывод итогов по данной stzatr
.}
вывод итогов по данной spkau
.}
вывод общих итогов

Вьюшки выгружаются нормально. Но сообщение "'есть данные spkau'" не выходит, отчет перед ним выснет.
В чем может быть причина подскажите пожалуйста.

Добавлено: 16 июл 2009, 22:22
Den
операторы навигации по ЛТ выполняются в блоке begin end в fcom

Добавлено: 17 июл 2009, 11:50
Masygreen

Код: Выделить всё

.begin
spkau_nrec := m.spkau.nrec;
if n.getfirst stzatr = tsok {message('есть данные stzatr')}
else message('нет данных stzatr');
end.
потом попробуйте закоментить

Код: Выделить всё

order by spkau.kodgrkau,spkau.code

Добавлено: 17 июл 2009, 14:17
KATZ
Когда-то давно пытался сделать отчет с двумя логическими таблицами, долго бился, но он у меня так и не заработал. Объединил две ЛТ в одну - всё пошло с полуоборота. Может, в текущем атлантисе эта проблема решена, но тем не менее... Да и по логике разбивать вашу выборку на две части смысла нет. Сделайте как-то так:

Код: Выделить всё

.create view AAA
from spkau, stzatr, tab_25
where
((
  10013<<=spkau.kodgrkau and 10036>>=spkau.kodgrkau and
  stzatr.nrec==tab_25.stkau3 and
  spkau.nrec==tab_25.ckau
))
order by spkau.kodgrkau, spkau.code, stzatr.kod;
.....
.{table 'AAA.spkau'
.{table 'AAA.stzatr'
.{table 'AAA.tab_25'
.....
.}
.....
.}
.....
.}
Обход записей здесь идет благодаря .{table, так что в getfirstах нет надобности.