Переключаемая сортировка

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

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

Ответить
Дарья
Посетитель
Сообщения: 37
Зарегистрирован: 18 авг 2008, 14:18
Откуда: Тюмень
Контактная информация:

Переключаемая сортировка

Сообщение Дарья »

Из следующего представления:
.create view V1
as
select PLPOR.NODOK, PLPOR.DATOB, PLPOR.SUMPLAT, KATORG.NAME,
KATORG1.NAME
from PLPOR, SOPRHOZ, AKTPERF, KATORG, KATORG KATORG1
where ((
vid + 1 == SOPRHOZ.TIDKGAL and
dBeg <<= SOPRHOZ.DATOB and
dEnd >>= SOPRHOZ.DATOB and
SOPRHOZ.CSOPRDOC == PLPOR.NREC and
SOPRHOZ.NREC == AKTPERF.CSOPRHOZ and
PLPOR.CPOL == KATORG.NREC and
PLPOR.CPLAT == KATORG1.NREC
))
and not isValidaLL(tnAKTPERF);
вывожу:
V1.PLPOR.NODOK
V1.PLPOR.DATOB
DoubleToStr(V1.PLPOR.SUMPLAT, '666''666''666.88')
if(vid = 0,V1.KATORG.NAME, V1.KATORG1.NAME)
(vid приходит из диалога)
Нужна сортировка по KATORG.NAME или KATORG1.NAME, в зависимости
от vid.
Пробовала добавить:
....
order BySob by KATORG.NAME
order ByStor by KATORG1.NAME
....
if (vid = 0)
then { SetOrder(tiBySob) }
else { SetOrder(tiByStor) }
....
Выводит пустой список, видимо совсем не то... Помогите, плз...!
(Еще - сначала сортировка по PLPOR.DATOB, а внутри её сортировка, описанная выше...)
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

А вообще во вью что-нить есть,если отключить всякие сортировки и фильтр ?
Дарья
Посетитель
Сообщения: 37
Зарегистрирован: 18 авг 2008, 14:18
Откуда: Тюмень
Контактная информация:

Сообщение Дарья »

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

Сообщение Den »

ну а если тупо написать без всяких setorder просто
order by plpor.datob,katorg1.name
тоже ничего ?

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

Сообщение edward_K »

я бы зашел через katorg и менял бы через pushbounds подцепку платежек(хотя проще наверное через basefin) - тогда было бы все путем.
Дарья
Посетитель
Сообщения: 37
Зарегистрирован: 18 авг 2008, 14:18
Откуда: Тюмень
Контактная информация:

Сообщение Дарья »

Den писал(а):ну а если тупо написать без всяких setorder просто
order by plpor.datob,katorg1.name
тоже ничего ?

навигация по вью то у Вас как осуществляется ?
просто order by не работает, навигация по вью:
.{table 'V1.SOPRHOZ'
.}
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Чёт даже не знаю...попробовал быстренько Ваш пример у себя - дак вроде все выводит, как написано. Может весь Ваш код приведете.
Дарья
Посетитель
Сообщения: 37
Зарегистрирован: 18 авг 2008, 14:18
Откуда: Тюмень
Контактная информация:

Сообщение Дарья »

Это работающая форма с сортировкой по умолчанию (т.е. по дате).
.Form 'OASU: Zapros'
.NameInList 'ОАСУ: Платежные поручения (есть оплата, но нет связи с ФО)'
.ard
.var
vid : Byte;
dBeg, dEnd : Date;
.endvar
.create view V1
as
select PLPOR.NODOK, PLPOR.DATOB, PLPOR.SUMPLAT, KATORG.NAME,
KATORG1.NAME
from PLPOR, SOPRHOZ, AKTPERF, KATORG, KATORG KATORG1
where ((
vid + 1 == SOPRHOZ.TIDKGAL and
dBeg <<= SOPRHOZ.DATOB and
dEnd >>= SOPRHOZ.DATOB and
SOPRHOZ.CSOPRDOC == PLPOR.NREC and
SOPRHOZ.NREC == AKTPERF.CSOPRHOZ and
PLPOR.CPOL == KATORG.NREC and
PLPOR.CPLAT == KATORG1.NREC
))
and not isValidaLL(tnAKTPERF);
.begin
vid := 0;
dBeg := Date(1,Month(Cur_Date),Year(Cur_Date));
dEnd := Cur_Date;
RunDialog(GetVidPP, vid, dBeg, dEnd);
end.
.fields
if(vid = 0,’собственных’, ‘сторонних’)
dBeg
dEnd
if(vid = 0,’Получатель’, ‘Плательщик’)
V1.PLPOR.NODOK
V1.PLPOR.DATOB
DoubleToStr(V1.PLPOR.SUMPLAT, '666''666''666.88')
if(vid = 0,V1.KATORG.NAME, V1.KATORG1.NAME)
.endfields
Реестр ^ платежных поручений (^ - ^)

Номер документа Дата оборота фактическая Сумма платежа по док-ту ^
.{table 'V1.SOPRHOZ'
^ ^ ^ ^
.}
.endform
А это не работающая...(написала по памяти, как у меня было)
...
.create view V1
as
select PLPOR.NODOK, PLPOR.DATOB, PLPOR.SUMPLAT, KATORG.NAME,
KATORG1.NAME
from PLPOR, SOPRHOZ, AKTPERF, KATORG, KATORG KATORG1
where ((
vid + 1 == SOPRHOZ.TIDKGAL and
dBeg <<= SOPRHOZ.DATOB and
dEnd >>= SOPRHOZ.DATOB and
SOPRHOZ.CSOPRDOC == PLPOR.NREC and
SOPRHOZ.NREC == AKTPERF.CSOPRHOZ and
PLPOR.CPOL == KATORG.NREC and
PLPOR.CPLAT == KATORG1.NREC
))
and not isValidaLL(tnAKTPERF)
order BySob by KATORG.NAME
order ByStor by KATORG1.NAME;

.begin
vid := 0;
dBeg := Date(1,Month(Cur_Date),Year(Cur_Date));
dEnd := Cur_Date;
RunDialog(GetVidPP, vid, dBeg, dEnd);
if (vid = 0)
then { SetOrder(tiBySob) }
else { SetOrder(tiByStor) }

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

Сообщение Den »

У меня обы варианта пашут.
У Вас какая версия Галактики и Атлантиса...
Дарья
Посетитель
Сообщения: 37
Зарегистрирован: 18 авг 2008, 14:18
Откуда: Тюмень
Контактная информация:

Сообщение Дарья »

Галактика 8.10
Атлантис 5.3.14
Что же за такое.....?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

проще надо быть и люди к вам потянутся :)
на большим объемах сортировка не по ключу, а тем более по связанным таблам всегда глючила. Поэтом и предлагаю на первое место поставить katorg, а остальное подтянуть по жесткой подцепке.
Дело в том, что для смены ключа в этом случае должна запускаться по новой "внешняя выгрузка" и видимо она не стартует.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

Pushbounds отрабатывает в форме нормально.
Ответить