Сортировка в browse
Модераторы: m0p3e, edward_K, Модераторы
Сортировка в browse
Добрый день!
Хотелось бы отображать сотрудников в порядке возрастания табельного номера.
Если вставляю "order by isemployee,tabnmb", отображается всего 1 человек.
Убираю - отображаются все, но сортировка явно по дате приема, а я хочу по табельному номеру.
Собственно текст:
interface Pick_OnePerson 'Выберите сотрудника' doAccept, cyan;
show at(20,4,80,15);
Create view
var date_ch: date;
nrec_pers: comp;
as select *
from persons
where (('С'==persons.isemployee and date_ch>>=persons.appdate and
(persons.disdate=date(0,0,0) or persons.disdate>date_ch)
)) and tabnmb<>0 and persons.appdate<>date(0,0,0)
!order by isemployee,tabnmb
;
Parameters date_ch, nrec_pers
browse bpersons;
fields
persons.Tabnmb 'Таб.№': [6], protect;
persons.fio 'ФИО': [30], protect;
persons.appdate 'Дата приема': [10], protect;
persons.disdate 'Дата ув.': [10], protect;
end;
Handleevent
cmDefault: { nrec_pers:=persons.nrec; }
end;
end.
Хотелось бы отображать сотрудников в порядке возрастания табельного номера.
Если вставляю "order by isemployee,tabnmb", отображается всего 1 человек.
Убираю - отображаются все, но сортировка явно по дате приема, а я хочу по табельному номеру.
Собственно текст:
interface Pick_OnePerson 'Выберите сотрудника' doAccept, cyan;
show at(20,4,80,15);
Create view
var date_ch: date;
nrec_pers: comp;
as select *
from persons
where (('С'==persons.isemployee and date_ch>>=persons.appdate and
(persons.disdate=date(0,0,0) or persons.disdate>date_ch)
)) and tabnmb<>0 and persons.appdate<>date(0,0,0)
!order by isemployee,tabnmb
;
Parameters date_ch, nrec_pers
browse bpersons;
fields
persons.Tabnmb 'Таб.№': [6], protect;
persons.fio 'ФИО': [30], protect;
persons.appdate 'Дата приема': [10], protect;
persons.disdate 'Дата ув.': [10], protect;
end;
Handleevent
cmDefault: { nrec_pers:=persons.nrec; }
end;
end.
Кто сказал, что бесполезно биться головой об стену?!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Сортировка в browse
самое простое указать нужный индекс во from. Но даже если вы указываете order by, то нужно внимательно следить, чтобы индексные условия подошли под ваш порядок сортировки, а если не подходят, то добавить после них (noindex) - в вашем случае после даты приема. Иначе временная таблица - отобрали и отсортировали как вам нужно например в скрытом поле. Да и перерисовывать не забывайте после поднятия другой сортировки - Rescanpanel(tnТаблица).
Re: Сортировка в browse
вместо 'order by' делала
from persons(PERSBYTABNMB) - это индекс по isemployee, tabnmb, strtabn
Так вообще выдает ошибку: Нет индекса для Persons.dat ...
from persons(PERSBYTABNMB) - это индекс по isemployee, tabnmb, strtabn
Так вообще выдает ошибку: Нет индекса для Persons.dat ...
Кто сказал, что бесполезно биться головой об стену?!
Re: Сортировка в browse
Сделала так:
не ругается, но и сортирует не по таб.№, а по ... дате приема!
Код: Выделить всё
interface Pick_OnePerson 'Выберите сотрудника' doAccept, cyan;
show at(20,4,80,15);
Create view
var date_ch: date;
nrec_pers: comp;
as select isemployee, tabnmb, nrec, fio, appdate, disdate
from persons(PERSBYTABNMB)
where (persons.disdate=date(0,0,0) or persons.disdate>date_ch) and
tabnmb<>0 and persons.appdate<>date(0,0,0)
bounds bpers = 'С'==persons.isemployee and date_ch>>=persons.appdate
;
Parameters date_ch, nrec_pers
browse bpersons;
fields
persons.Tabnmb 'Таб.№': [6], protect;
persons.fio 'ФИО': [30], protect;
persons.appdate 'Дата приема': [10], protect;
persons.disdate 'Дата ув.': [10], protect;
end;
Handleevent
cmInit: pushbounds(tbbpers);
cmDefault: nrec_pers:=persons.nrec;
cmClose: popbounds(tbbpers);
end;
end.
Кто сказал, что бесполезно биться головой об стену?!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Сортировка в browse
bounds конечно лишний - он вам нужен? лучше все ограничения накладывать в запросе
напишите так
bounds bpers = 'С'==persons.isemployee and date_ch>>=persons.appdate(noindex) <<< я про это говорил
ordered by persons.isemployee,persons.tabnmb
индекс во from лучше тогда убрать
напишите так
bounds bpers = 'С'==persons.isemployee and date_ch>>=persons.appdate(noindex) <<< я про это говорил
ordered by persons.isemployee,persons.tabnmb
индекс во from лучше тогда убрать
Re: Сортировка в browse
Bounds завела от безысходности
Но наконец-то разобралась.
Получалось, что индекс у меня противоречил условию в двойных скобках.
Спасибо!
Но наконец-то разобралась.
Получалось, что индекс у меня противоречил условию в двойных скобках.
Спасибо!
Кто сказал, что бесполезно биться головой об стену?!
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Сортировка в browse
Подскажите, пож., как в browse сделать отображение стрелочки вверх или вниз при клике на наименовании колонки? Сама сортировка отрабатывает нормально, но хочется, чтобы была и визуализация- по какой колонке отсортированы записи. Код:
Может, какие атрибуты надо указать?
Код: Выделить всё
...
Panel Panel_;
Table t_SpMnPl;
browse bclaim (,,sci13478esc) ;
show at (,2 , ,37)
fields
t_SpMnPl.sNameMc 'Наименование МЦ' : [50], protect; //<- по этой колонке сортировка
t_SpMnPl.sBarKod 'Ном.номер' : [12], protect;
t_SpMnPl.sGrMcUsl 'Группа' : [20], protect;
t_SpMnPl.sCo 'Объект' : [10], protect;
t_SpMnPl.sMnPlan 'Заказ-наряд' : [35], protect; //<-.. и по этой
...
Handleevent // главное окно
cmColumnClicked: // Сортировать по:
{
case target of
#t_SpMnPl.sMnPlan: {SetOrder(tiMnPlan); reScanPanel(#t_SpMnPl);}
#t_SpMnPl.sNameMc: {SetOrder(tiNameMc); reScanPanel(#t_SpMnPl);}
end;
}
...
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Сортировка в browse
открываем vipprogr.chm
ищем "Метод SetColumnSorting"
ищем "Метод SetColumnSorting"
-
- Местный житель
- Сообщения: 552
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Челябинск
- Контактная информация:
Re: Сортировка в browse
Ок, то, что надо!
Re: Сортировка в browse
В 9.1 при параметре в CFG файлеzna писал(а):сделать отображение стрелочки вверх или вниз при клике на наименовании колонки ... сортировка отрабатывает .... Может, какие атрибуты надо указать?
Код: Выделить всё
System.UseBrowserCacheAndSort=on
System.UseTreeCacheAndSort=on