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

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