Страница 1 из 1
Помогите сделать сортировку....
Добавлено: 12 июл 2011, 11:32
Ренат
Доброго всем времени суток!
Тема уже сто раз обсуждалась, но я так и не усвоил для себя как решается эта задача.
Есть простой интерфейс. В таблицу Custlic добавленно собственное поле BdateGLVZ. Необходимо, чтобы при выводе данных записи соритровались по этому полю.
Приведу полностью текс интерфейса.
Код: Выделить всё
Interface License_sorting 'Сортировка лицензий';
create view as
select CUSTLIC.SerijaGLVZ, CUSTLIC.NomerGLVZ, CUSTLIC.BDateGLVZ, CUSTLIC.EDateGLVZ
from custlic
where (( comp(2)==Custlic.cdog))
ORDER BY CUSTLIC.BdateGLVZ;
Browse brs_listLicense;
table CUSTLIC;
Fields
CUSTLIC.SerijaGLVZ 'Серия' :[5] ,Protect;
CUSTLIC.NomerGLVZ 'Номер' :[12],Protect;
CUSTLIC.BDateGLVZ 'Дата начала' :[12],Protect;
CUSTLIC.EDateGLVZ 'Дата окончания' :[12],Protect;
end;//brs_listLicense;
end. //interface
Скажите, что нужно сделать, чтобы выводились все записи? Сейчас из трех реально существующих записей выводиться только одна.....
Re: Помогите сделать сортировку....
Добавлено: 12 июл 2011, 16:53
KATZ
Добавьте в таблицу индекс по комбинации полей cDog+BDateGLVZ.
Re: Помогите сделать сортировку....
Добавлено: 12 июл 2011, 17:03
Ренат
Не разрешают добавить индекс. Хотя, раз поля добавили, можно было бы уж и индексы завести...
Вобщем нужно без индексов.
Re: Помогите сделать сортировку....
Добавлено: 12 июл 2011, 18:03
Masygreen
ну тогда загружайте таблицу в свою времянку, где описан нужный индекс .. и сработайте с ней в интерфейсе
Re: Помогите сделать сортировку....
Добавлено: 12 июл 2011, 18:06
Ренат
Это я понимаю. Можно при открытии интерфейса все грузить во временную таблицу и синхронизировать с основной, но хотелось бы все сделать без таких хитростей.
Неужели нельзя сделать сортировку без индекса?
Re: Помогите сделать сортировку....
Добавлено: 12 июл 2011, 18:44
galover
а что order by external не фурычит?
Re: Помогите сделать сортировку....
Добавлено: 12 июл 2011, 18:51
Ренат
Нет. Попробовал вот такой вариант:
Код: Выделить всё
Interface License_sorting 'Сортировка лицензий';
create view as
select CUSTLIC.SerijaGLVZ, CUSTLIC.NomerGLVZ, CUSTLIC.BDateGLVZ, CUSTLIC.EDateGLVZ
from custlic
where (( comp(2)==Custlic.cdog))
ORDER byBdate External BY CUSTLIC.BdateGLVZ;
Browse brs_listLicense;
table CUSTLIC;
Fields
CUSTLIC.SerijaGLVZ 'Серия' :[5] ,Protect;
CUSTLIC.NomerGLVZ 'Номер' :[12],Protect;
CUSTLIC.BDateGLVZ 'Дата начала' :[12],Protect;
CUSTLIC.EDateGLVZ 'Дата окончания' :[12],Protect;
end;//brs_listLicense;
HandleEvent
cminit:
{
setorder(tibyBdate);
CallToNeighbours(cmSetPos,#CUSTLIC);
};
end;
end. //interface
Так же на экране отображается только одна запись из трех реально существующих.
Re: Помогите сделать сортировку....
Добавлено: 12 июл 2011, 19:22
galover
а если написать просто:
Код: Выделить всё
select CUSTLIC.SerijaGLVZ, CUSTLIC.NomerGLVZ, CUSTLIC.BDateGLVZ, CUSTLIC.EDateGLVZ
from custlic
where (( comp(2)==Custlic.cdog))
ORDER External BY CUSTLIC.BdateGLVZ;
и убрать:
Код: Выделить всё
cminit:
{
setorder(tibyBdate);
CallToNeighbours(cmSetPos,#CUSTLIC);
};
?
Re: Помогите сделать сортировку....
Добавлено: 12 июл 2011, 19:27
galover
ну а вообще в support-e вот такой запрос:
Код: Выделить всё
select CUSTLIC.SerijaGLVZ, CUSTLIC.NomerGLVZ, CUSTLIC.BDateGLVZ, CUSTLIC.EDateGLVZ
from custlic
where (( comp(2)==Custlic.cdog))
ORDER External BY CUSTLIC.BdateGLVZ;
нормально отрабатывает?
Re: Помогите сделать сортировку....
Добавлено: 13 июл 2011, 08:07
n0where
А зачем EXTERNAL в ORDER BY?
Кстате могет помочь
Код: Выделить всё
bounds onlyOrder
ordered by CUSTLIC.BdateGLVZ
Re: Помогите сделать сортировку....
Добавлено: 13 июл 2011, 10:11
Ренат
ну а вообще в support-e вот такой запрос:
select CUSTLIC.SerijaGLVZ, CUSTLIC.NomerGLVZ, CUSTLIC.BDateGLVZ, CUSTLIC.EDateGLVZ
from custlic
where (( comp(2)==Custlic.cdog))
ORDER External BY CUSTLIC.BdateGLVZ;
нормально отрабатывает?
Да, отрабатывает нормально. Возвращает все три лицензии.
Переделал интерфейс с исользованием этого запроса. Убрал обработчик cmInit. Так же отображает только одну лицензию.
Код: Выделить всё
Interface License_sorting 'Сортировка лицензий';
create view as
select CUSTLIC.SerijaGLVZ, CUSTLIC.NomerGLVZ, CUSTLIC.BDateGLVZ, CUSTLIC.EDateGLVZ
from custlic
where (( comp(2)==Custlic.cdog))
ORDER External BY CUSTLIC.BdateGLVZ;
Browse brs_listLicense;
table CUSTLIC;
Fields
CUSTLIC.SerijaGLVZ 'Серия' :[5] ,Protect;
CUSTLIC.NomerGLVZ 'Номер' :[12],Protect;
CUSTLIC.BDateGLVZ 'Дата начала' :[12],Protect;
CUSTLIC.EDateGLVZ 'Дата окончания' :[12],Protect;
end;//brs_listLicense;
end. //interface
А зачем EXTERNAL в ORDER BY?
Кстате могет помочь
bounds onlyOrder
ordered by CUSTLIC.BdateGLVZ
Не получилось, пишет ошибку: Нужен ключ для BdateGLVZ для CustLic
Re: Помогите сделать сортировку....
Добавлено: 13 июл 2011, 11:11
galover
Да уж, похоже очередной глюк Атлантиса. Нужно в ТП писать. Можно в качестве костыля написать так:
Код: Выделить всё
Browse brs_listLicense;
viewTable;
Fields
...