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

Зависание при формировании отчета.

Добавлено: 23 май 2007, 12:00
Vik
В общем есть объектный интерфейс, в котором описаны некоторые функции. Далее, в интерфейсе, его реализующем (InterExample), есть такая вьюха:

create view
var persons_nrec, appoint_nrec:comp;
//все по сотрудникам (через назначения)
as
select //appointments.nrec,
persons.TABNMB, persons.fio, persons.sex, PERSONS.DISDATE,
c6.name, c5.name, c2.code, c2.name, c1.name,
c3.name, APPOINTMENTS.CONTRACTNMB, APPOINTMENTS.NMBDOG, APPOINTMENTS.CONTRACTDATE,
KLKATEGO.KOD, KLKATEGO.NAIKAT, c4.code, c4.name,
APPOINTMENTS.ORDERNMB, APPOINTMENTS.ORDERDATE,
APPOINTMENTS.APPOINTDATE,APPOINTMENTS.DISMISSDATE,
c7.name
from appointments, persons,
klkatego, //категория:очно,заочно...
catalogs c4, //должность:студент,слушатель...
catalogs c3, //вид дог.:целевой, с юр.лицом...
catalogs c1, //доп.сведения:1 курс...
catalogs c2, //подразделение (группа)
catalogs c5, //специальность
catalogs c6, //факультет
catalogs c7 //причина ухода в академический отпуск
where ((
0==persons.nrec and
persons.APPOINTCUR == APPOINTMENTS.nrec and
Appointments.EMPCATEGORY == klkatego.nrec and //категория:очно,заочно...
Appointments.POST == c4.nrec and //должность:студент,слушатель...
Appointments.CDOG ==c3.nrec and //вид дог.:целевой, с юр.лицом...
Appointments.CADDNREC1 == c1.nrec and //доп.сведения:1 курс...
Appointments.DEPARTMENT == c2.nrec and //подразделение (группа)
c2.cparent == c5.nrec and //специальность
c5.cparent == c6.nrec and //факультет
Appointments.TYPEMOVE == c7.nrec)) //причина ухода в академический отпуск

bounds Persons_Cur = persons_nrec==persons.nrec
bounds Appoint_Get = appoint_nrec == appointments.nrec and APPOINTMENTS.PERSON==persons.nrec

Ну и реализации функций. Объектный интерфейс подключается в проект. Функции используются в присоединенке, которая тоже компиллируется в этом проекте. Создается переменная, типа InterExample. При формировании отчета в первый раз, наблюдаются дикие тормоза, которых нет, когда нет вьюхи. Что может быть сделано не так, или чего не сделано?

Добавлено: 23 май 2007, 15:31
edward_K
1. вам же говорили незя накладывать в одном баундсе ограничение на 2 таблы.
2. правильно (если persons_nrec незя задействовать)
наложить новый боундс на appontments, потом на persons
хотя по смыслу фильтр по persons_nrec можно было бы и во вьюхе сделать.
3. а можно было б и вообще без боундс обойтись - сделать сниноним на appointments - нашли нужную запись, записали в appoint_nrec и дальше бы смотрели синоним.
4.logstrtofile + cur_time как обычно универсальное решение для быстрого поиска причин 8)

Добавлено: 23 май 2007, 18:08
Vik
Большое спасибо за ответ, только меня первый пункт смущает) Когда это мне говорили? Просто я никогда до этого с баундами не работал, поэтому спрашивать не мог. Или это имеется ввиду, нам, начинающим?) Хотя уже не важно. Будем экспериментировать дальше)

Добавлено: 24 май 2007, 09:55
edward_K
компилятор 100% ругался
vip_res.log посмотрите