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

Дескрипторы в интерфейсе

Добавлено: 26 окт 2005, 13:03
charly
Помогите кто может пожалуйста.
Мне необходимо вывести дескрипторы в интерфейсе, но необходимо их отсортировать. Таблица tuneval не имеет индекса по полю strval, и соответствеенно сортировки не происходит, а менять структуру БД с добавлением нового индекса запрещено.
(но на тестовой базе добавлял индекс все ОК сортирует).

Добавлено: 26 окт 2005, 14:01
Алексей
Пиши свой интерфейс, наполняй временную таблицу данными, сортируй как хочешь.

Добавлено: 26 окт 2005, 17:44
charly
С этим я тоже разобрался,
но тогда надо постоянно эту таблицу обновлять(я имею ввиду временную), или я не так понял?

может все таки есть еще какой-нибудь способ?

Добавлено: 26 окт 2005, 18:00
Goblin
Да не запрещено добавлять - нежелательно просто ввиду необходимости контроля за грядущими изменениями.
Главное перед патчами или перед сменой релиза проверять - а не происходит ли там добавление/удаление индексов в эту таблу ...
В таком случае свой индекс дропать, делать нужные действия по переходу на новый патч/релиз , потом снова добавить ..
А так - особых хлопот не даст, добавленный индекс встанет последним, никому мешать не будет и есть просить не станет

Добавлено: 26 окт 2005, 18:17
charly
Да я имел ввиду запрещено не Галактикой, а мне запрещено изменять структуру БД, поставлена задача возможными путями обойти эту проблему.

Добавлено: 27 окт 2005, 05:30
Алексей
А что конкретно вы хотите сделать? просто отображать в интерфейсе списко отсортированных дескрипторов? получить отчет?
Или он ещё что-то должен делать?
Интерфейс свой (написаный) или стандартный?

Добавлено: 27 окт 2005, 11:53
charly
необходимо сделать отчет который выводит счет фактуры по дескриптору, т.е. менеджер выбирает нужный дескриптор из интерфейса и получает N-ое количество счет-фактур за месяц, за год или за два, существует еще несколько ограничений.
Пока мы были на 585 все работало и дескрипторы в интрефейсе сортировались, как только перешли на 712 интерфейс стал пустым, проверял на 585 еще раз все работало,
немного изменил его и дескрипторы выводятся, но как только сортируешь их, выводится толлько последний.
вот мне и интерсно можно как-нибудь еще отсортировать эти дескрипторы именно в интерфейсе

текст интрефейса:
Interface int_akts_descr 'выбор дескриптора' cyan, doaccept;
var
d2:comp;
x2:word
c2:string;
parameters d2, x2, c2;
create view tuneva as select
tuneval.strval, x$users.XU$LOGINNAME
from tuneval(memory, autoload), x$users
where((tuneval.cuser==x$users.atl_nrec))
and d2=tuneval.ctune
and x2=tuneval.obj
and ''<>tuneval.strval
order b1 by tuneval.strval
;
browse b1;
table tuneval;
fields
tuneval.strval 'Дескриптор':protect ;
X$USERS.XU$LOGINNAME 'Логин пользователя':protect;
end;
handleevent
cmdefault:{
SetTableBackOrderIn(tntuneval, true);
RereadRecord (tntuneval);
c2:=tuneval.strval;
}
end;
end.

d2- параметр, определяющий что значение настройки ссылается на настройку ДЕСКРИПТОР
X2- ТИП ОБЪЕКТА, номер оффиса

Добавлено: 27 окт 2005, 13:08
san
попробуй на внешней выгрузке сделать сотрировку
order b1 by tuneval.strval -> order b1 EXTERNAL by tuneval.strval;
SetTableBackOrderIn(tntuneval, true); -> tuneva.SetOrder(tuneva.tib1)

Добавлено: 27 окт 2005, 16:26
charly
К сожалению так тоже не получается,
но буду искать...

Добавлено: 27 окт 2005, 19:34
Slavik
создаем вьюшку в которой прописываем сортировку по нужному полю и подключаем ее к интерфейсу.

Добавлено: 28 окт 2005, 01:00
charly
Slavik,
а можно по поводу вьюшки немного по подробнее?
пожалуйста.

Добавлено: 31 окт 2005, 14:10
Slavik
create or replace view UsersDescr as
select ... from ... order by ...

Добавлено: 31 окт 2005, 14:17
Slavik
например:

Код: Выделить всё

create or replace view UsersDescr as 
select u.atl_nrec puser, nvl(u.xu$fullname,' По умолчанию') fullname, nvl(u.xu$loginname,'_default') login
, max(decode(tv.fctune,'80000000000001B3',tv.fstrval)) descr 
, max(decode(tv.fctune,'80000000000001B4',tv.fstrval)) desgr
, max(gd.fname) fname
from gal.tuneval tv, gal.x$users u, gal.grdescr gd
where tv.fcuser=u.atl_nrec(+) and tv.fctune in ('80000000000001B4', '80000000000001B3') 
and tv.fstrval=gd.fdesgr(+)
group by u.xu$fullname, u.xu$loginname

Добавлено: 14 ноя 2005, 09:54
Maverick
:mad:
при чем здесь Ораклиная вьюха?
Человек пытаетес средствами ВИП сделать интерфейс и отчет...