Не могу отсортировать!
Модераторы: m0p3e, edward_K, Модераторы
Не могу отсортировать!
Добрый день!
Мне нужно в отчет вытащить данные из таблицы OTPUSK, отсортированными по полю DATAN.
Делаю так:
.....
.create view fo
as select otpusk.*
from otpusk(OTPUSK04)
where ((otpusk.cfactotpusk==factotpusk.nrec)) and 0<factotpusk.cplanotpusk and 1=otpusk.kotpus
!order by otpusk.datan
bounds bfo = ltabn==otpusk.tabn
;
.....
fo.pushBounds(fo.tbbfo);
ltabn:=NNNN;
.....
.{ table 'fo' by fo.otpusk.datan
.....
.}
.....
Сортирует упорно по NREC.
Проблема в том, что когда оформляют отзыв из отпуска в середине периода, то запись в таблице OTPUSK корректируется (причем меняется именно поле DATAN), и следом формируется еще одна запись, относящаяся к началу отпуска, и в результате получается что сначала выводится запись о второй половинке разбитого отпуска, а потом о первой. Не могу это победить.
Если делать просто запрос(без отчета) с сортировкой
order by otpusk.datan, то все отрабатывает красиво. Но мне надо в отчете.
Мне нужно в отчет вытащить данные из таблицы OTPUSK, отсортированными по полю DATAN.
Делаю так:
.....
.create view fo
as select otpusk.*
from otpusk(OTPUSK04)
where ((otpusk.cfactotpusk==factotpusk.nrec)) and 0<factotpusk.cplanotpusk and 1=otpusk.kotpus
!order by otpusk.datan
bounds bfo = ltabn==otpusk.tabn
;
.....
fo.pushBounds(fo.tbbfo);
ltabn:=NNNN;
.....
.{ table 'fo' by fo.otpusk.datan
.....
.}
.....
Сортирует упорно по NREC.
Проблема в том, что когда оформляют отзыв из отпуска в середине периода, то запись в таблице OTPUSK корректируется (причем меняется именно поле DATAN), и следом формируется еще одна запись, относящаяся к началу отпуска, и в результате получается что сначала выводится запись о второй половинке разбитого отпуска, а потом о первой. Не могу это победить.
Если делать просто запрос(без отчета) с сортировкой
order by otpusk.datan, то все отрабатывает красиво. Но мне надо в отчете.
Кто сказал, что бесполезно биться головой об стену?!
Индекс я вставила уже от безысходности, без него тоже не работало...
Если пишу
.create view fo
as select otpusk.*
from otpusk
where ((otpusk.cfactotpusk==factotpusk.nrec)) and 0<factotpusk.cplanotpusk and 1=otpusk.kotpus
bounds bfo = 0<<=otpusk.choice and ltabn==otpusk.tabn and date(0,0,0)<<otpusk.datan
;
ругается компилятор, что нет такого индекса.
Если пишу
.create view fo
as select otpusk.*
from otpusk
where ((otpusk.cfactotpusk==factotpusk.nrec)) and 0<factotpusk.cplanotpusk and 1=otpusk.kotpus
bounds bfo = 0<<=otpusk.choice and ltabn==otpusk.tabn and date(0,0,0)<<otpusk.datan
;
ругается компилятор, что нет такого индекса.
Кто сказал, что бесполезно биться головой об стену?!
Вы хотите сказать, что торетически вариант из первого письма должен работать, что ошибка где-то чуть глубже?
Дело в том что изначально отчет работал не по OTPUSK, а по FACTOTPUSK, там поля по-другому называются, но суть та же, и все работало. Потом выяснилось, что по таблице FACTOTPUSK не отслеживаются отзывы в середине периода, вот и пришлось переделывать. Казалось бы, переделки незначительные, а сортировка перестала работать.
Дело в том что изначально отчет работал не по OTPUSK, а по FACTOTPUSK, там поля по-другому называются, но суть та же, и все работало. Потом выяснилось, что по таблице FACTOTPUSK не отслеживаются отзывы в середине периода, вот и пришлось переделывать. Казалось бы, переделки незначительные, а сортировка перестала работать.
Кто сказал, что бесполезно биться головой об стену?!