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

Не видит записи при выборке в отчёте, хотя в саппорте видит

Добавлено: 24 сен 2008, 17:48
Pomuk
Добрый день.
Делаю форму приказа на отпуск на основе прототипа FormT6_04 (галактика 7,12)
И в ней делаю следующую вьюшку
.Create view Depart as select catalogs1.name,catalogs2.name
from catalogs catalogs1,catalogs catalogs2
where catalogs1.name = подразделение
and catalogs2.nrec = catalogs1.cparent ;
.begin
getfirst catalogs;
message(Depart.catalogs1.name)
message(Depart.catalogs2.name)
End.

То есть, её смысл в том, что прототип в переменную "подразделение" выдаёт название подразделения, а я хочу при помощи вьюшки узнать подразделение, находящее в иерархии на уровень выше.
Убираю из вьюшки ".Create view Depart as " и вставляю в саппорт в SQL запрос- данные выдаются, вставляю в отчёт - нет.
Убираю из запроса всё что связано с catalogs2, и данные выдаются. То есть, вот такой запрос работает

.Create view Depart as select catalogs1.name
from catalogs catalogs1
where catalogs1.name = подразделение;

Вычисляю catalogs1.cparent вручную и подставляю в запрос

.Create view Depart as select catalogs2.name
from catalogs catalogs2
where catalogs2.nrec = 'вычесленная вручную ссылка';

Тоже данные выдаются. А вот когда всё в одном запросе - не хочет. В чём может быть проблема?

Добавлено: 25 сен 2008, 10:25
PViP
Pomuk, попробуйте сделать так

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

.Create view Depart as select catalogs1.name,catalogs2.name 
from catalogs catalogs1,catalogs catalogs2 
where catalogs1.name = подразделение 
and catalogs2.nrec = catalogs1.cparent ; 
.begin 
Depart.getfirst; 
message(Depart.catalogs1.name) 
message(Depart.catalogs2.name) 
End. 
а я бы сделал так

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

.Create view Depart as select catalogs1.name,catalogs2.name 
from catalogs catalogs1,catalogs catalogs2 
where ((
     подразделение     == catalogs1.name(noindex) 
 and catalogs1.cparent == catalogs2.nrec
)); 
.begin 
Depart.getfirst; 
message(Depart.catalogs1.name) 
message(Depart.catalogs2.name) 
End. 

Добавлено: 25 сен 2008, 11:28
k_vit
Цепляться к полю Name таблицы Catalogs не очень хорошо....

Вот вам вариант как получить nRec подразделения:
В прототипе есть поле PERSNREC - ссылка на сотрудника

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

.Create view Depart
as select
  Catalogs.Name,
  CatDep.Name

from
  Catalogs,
  Synonym Catalogs CatDep

where
((
   PERSNREC == Persons.nRec and
   Persons.Department == Catalogs.nRec and
   Catalogs.cParent == CatDep.nRec
));
И конечно пользуетесь GetFirst'ами чтобы вытянуть данные из CatDep

Добавлено: 25 сен 2008, 11:32
Pomuk
Заработало
Спасибо большое.
И за конструктивное дополнение тоже спасибо :)