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

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

Добавлено: 13 янв 2009, 16:43
Дарья
Из следующего представления:
.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, а внутри её сортировка, описанная выше...)

Добавлено: 13 янв 2009, 17:30
Den
А вообще во вью что-нить есть,если отключить всякие сортировки и фильтр ?

Добавлено: 13 янв 2009, 17:38
Дарья
Да, есть, и даже с фильтрами. Как только добавляю сортировку, ни одной записи нет...

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

навигация по вью то у Вас как осуществляется ?

Добавлено: 14 янв 2009, 02:31
edward_K
я бы зашел через katorg и менял бы через pushbounds подцепку платежек(хотя проще наверное через basefin) - тогда было бы все путем.

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

навигация по вью то у Вас как осуществляется ?
просто order by не работает, навигация по вью:
.{table 'V1.SOPRHOZ'
.}

Добавлено: 14 янв 2009, 11:13
Den
Чёт даже не знаю...попробовал быстренько Ваш пример у себя - дак вроде все выводит, как написано. Может весь Ваш код приведете.

Добавлено: 14 янв 2009, 11:22
Дарья
Это работающая форма с сортировкой по умолчанию (т.е. по дате).
.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.
...

Добавлено: 14 янв 2009, 11:38
Den
У меня обы варианта пашут.
У Вас какая версия Галактики и Атлантиса...

Добавлено: 14 янв 2009, 12:40
Дарья
Галактика 8.10
Атлантис 5.3.14
Что же за такое.....?

Добавлено: 14 янв 2009, 13:36
edward_K
проще надо быть и люди к вам потянутся :)
на большим объемах сортировка не по ключу, а тем более по связанным таблам всегда глючила. Поэтом и предлагаю на первое место поставить katorg, а остальное подтянуть по жесткой подцепке.
Дело в том, что для смены ключа в этом случае должна запускаться по новой "внешняя выгрузка" и видимо она не стартует.

Добавлено: 14 янв 2009, 13:37
edward_K
Pushbounds отрабатывает в форме нормально.