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

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

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

Ответить
Pomuk
Новичок
Сообщения: 29
Зарегистрирован: 26 май 2006, 13:45
Откуда: Москва

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

Сообщение 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 = 'вычесленная вручную ссылка';

Тоже данные выдаются. А вот когда всё в одном запросе - не хочет. В чём может быть проблема?
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение 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. 
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение 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
Pomuk
Новичок
Сообщения: 29
Зарегистрирован: 26 май 2006, 13:45
Откуда: Москва

Сообщение Pomuk »

Заработало
Спасибо большое.
И за конструктивное дополнение тоже спасибо :)
Ответить