Синтаксис установки фильтра на представление

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Alla
Постоянный обитатель
Сообщения: 109
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Синтаксис установки фильтра на представление

Сообщение Alla »

В лицевых карточках (форма т54а)не выводится подразделение, должность...
Пыталась дописать присоединенную форму запросом по недастающим данным.
Само представление формируется, а как дальше его использовать, чтобы на него наложить фильтр типа:
если t1.tabnom=tabn(а TABN-это тн выбранного работника, которому и надо распечатать лиц счет).

Если б для одного человека, то это ограничение можно бы было включить в запрос, но так как может быть помечено несколько человек, то куда и как наложить этот фильтр.

.LinkForm 'Tob_ls' Prototype is 'T54aNew'
.NameInList 'Тоб Лицевой счет N Т-54а'
.create view t1 as
select persons.tabnmb(fieldname=tabnom),appointments.orderdate(fieldname=or1),
appointments.ordernmb(fieldname=or2),
catalogs.name(fieldname=cat1),a.name(fieldname=cat2),b.name(fieldname=cat3),
appointments.category,lschet.tarif
from persons,catalogs a,catalogs b
where ((lschet.tperson/==persons.nrec
and persons.appointcur/==appointments.nrec
and appointments.department==catalogs.nrec
and appointments.post==a.nrec
and appointments.workcond==b.nrec
));

.fields
....
Podr1
Dolg1
....
e':'s'
.endfields

Начинается цикл по выводу полей, сюда бы по идее и надо включить фильтр, но не представляю синтаксис установки фильтра на представление.
.begin
Фильтр t1.tabnom=tabn
if Podr1='' then Podr1:=t1.cat1;
end.
Vitas
Местный житель
Сообщения: 230
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь

Re: Синтаксис установки фильтра на представление

Сообщение Vitas »

попробуй использовать модификаторы типа GetNext
Ищу возможности довести и так отличный продукт до еще большего блеска
Саша Г.
Местный житель
Сообщения: 281
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Пермь

Re: Синтаксис установки фильтра на представление

Сообщение Саша Г. »

Где-то я слышал, что GEtNext работает очень медлено на больших таблах (оно и понятно).
Легче переформировывать логич. таблицу по кажому таб.номеру, т.е. использовать фильт на лог. таблицу.
Примерно так

.var tabel : string;
.endvar
.Create view t1 ...
.....
and (tabel=lschet.tabn);
.....
.{ Цикл по лицевым счетам в форме
.begin
tabel:=переменная табельный номер из формы
(В результате формируется лог таблица по одному табельному номеру)
if t1.getnext=0 then {};
(встаешь на первую запись таблы...)
......
end.
.....
.}
sth
Постоянный обитатель
Сообщения: 148
Зарегистрирован: 29 мар 2005, 17:49

Re: Синтаксис установки фильтра на представление

Сообщение sth »

я так понял, что tabn это табельный номер из потока? тогда так:
.create view t1 as
select persons.tabnmb(fieldname=tabnom),appointments.orderdate(fieldname=or1),
appointments.ordernmb(fieldname=or2),
catalogs.name(fieldname=cat1),a.name(fieldname=cat2),b.name(fieldname=cat3),
appointments.category,lschet.tarif
from persons,catalogs a,catalogs b
where
((

tabn == lschet.tabn and


lschet.tperson/==persons.nrec
and persons.appointcur/==appointments.nrec
and appointments.department==catalogs.nrec
and appointments.post==a.nrec
and appointments.workcond==b.nrec
));

при этом надо обязательно, чтобы tabn был уникальным...конечно лучше бы из потока взять nrec, если он там есть.
ну и я не знаю как там в lschetе с индексами, может и ругнется на отсутствие ключа

а потом надо сделать что-то типа
if t1.getfirst = 0 {}
и выводить нужные поля ну или делать с ними что там надо.
Vitas
Местный житель
Сообщения: 230
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь

Re: Синтаксис установки фильтра на представление

Сообщение Vitas »

Модификатор работает нормально, лучше даже использовать для начала GetNext, а если боишься, что будет тормозить из за объема, то используй модификатор на твой View в котором будут только те данные, которые тебе вообще необходимо использовать в отчете.
Ищу возможности довести и так отличный продукт до еще большего блеска
Alla
Постоянный обитатель
Сообщения: 109
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Синтаксис установки фильтра на представление

Сообщение Alla »

Я все же не допоняла...

tabn == lschet.tabn
Для случая, когда в потоке только один табельный номер TABN, это подходит.

А если помечены и переданы в форму несколько таб.номеров TABN, как тогда ограничить представление?
Alla
Постоянный обитатель
Сообщения: 109
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Синтаксис установки фильтра на представление

Сообщение Alla »

Нет, кажется, поняла.
Alla
Постоянный обитатель
Сообщения: 109
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Синтаксис установки фильтра на представление

Сообщение Alla »

Всем огромное спасибо.
Ответить