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

Вывод в Screen полей из x$Users

Добавлено: 01 июн 2009, 12:59
Pomuk
Делаю Screen

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

Screen Users 'Пользователи' (,,Sci13Esc);
Table x$users;
Fields
x$users.XU$useroffice 'Офис' :[3];
x$users.XU$LOGINNAME 'Идентификатор' : [10];
x$users.XU$FULLNAME 'Имя пользователя' : [77];
end;
При компиляции пишет:
Ошибка: Нет такой функции, поля или метода : X$USERS.XU$USEROFFICE (стр.79, поз.23)
x$users.XU$useroffice 'Офис' [3];

Есть какие-то особенности при использовании этой таблицы или таблиц начинающихся с x$ или полей начинающихся с XU$?

Добавлено: 01 июн 2009, 13:27
edward_K
X$INDEXES_from.XI$NAME 'Индекс' :[10],protect ;
возможно дело в create view

Добавлено: 01 июн 2009, 13:46
Pomuk
вьюха вот такая

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

create view 
from 
ComponentModules, 
Components, 
ComponentUsers 
x$users
where 
(( 
'galnet' == ComponentModules.EXEName
 and ComponentModules.Atl_Nrec == Components.ModuleCOde (noindex)
 and Components.Atl_nRec == ComponentUsers.ResCode
 and ComponentUsers.USERCODE ==x$users.atl_nrec
))
X$INDEXES_from это я так понимаю просто синоним таблицы X$INDEXES?

Добавлено: 01 июн 2009, 16:37
galover
Pomuk
в описании вьюхи запятую пропустил после ComponentUsers

Добавлено: 01 июн 2009, 17:04
m0p3e
galover
Во глаз - алмаз! :)

Добавлено: 01 июн 2009, 17:25
Pomuk
Да вообще и не говорите. Мне б такой :)
Но вот к сожалению, эта запятая проблему не решает :(

Добавлено: 01 июн 2009, 18:35
m0p3e
А почему в описании таблицы не указано что выбираем?
Create View
as Select *
from ...

Добавлено: 01 июн 2009, 18:40
edward_K
В описании полей еще не хватает ":". Короче - ищите 10 отличий :)

Добавлено: 01 июн 2009, 18:58
Pomuk
m0p3e писал(а):А почему в описании таблицы не указано что выбираем?
Create View
as Select *
from ...
Ну на сколько я знаю, это не обязательно, вот и не указывал. К тому же это, не динственный Screen в этом интерфейсе, в других всё работает и без указания полей.
edward_K писал(а): В описании полей еще не хватает ":"
Нравится мне как сработал копипаст :) Есть там двоеточии :)

Добавлено: 01 июн 2009, 19:12
m0p3e
В 99% случаев работает, но я натыкался именно на такое поведение компилятора при отсутствии описания выборки. Есть подозрение, что зависит от платформы, но не уверен. Я наступал на такие грабли под MSSQL.

Добавлено: 01 июн 2009, 19:15
Gameus_
на оракле тоже бывает не отрабатывает

Добавлено: 01 июн 2009, 19:24
Pomuk

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

create view 
as select *
from 
ComponentModules, 
Components, 
x$users,
ComponentUsers
не помогло

Добавлено: 01 июн 2009, 19:58
m0p3e
давай весь фейс в студию.

Добавлено: 02 июн 2009, 11:50
san
Любопытный пример :-) Если это Screen где же шаблоны <<.@@@@@@@ >> для вывода полей и названия для полей в нем не указываются, наверное это все таки Browse! :cool: -и ни каких ошибок при компиляции нет.
interface test;
create view
from
ComponentModules,
Components,
ComponentUsers,
x$users
where
((
'galnet' == ComponentModules.EXEName
and ComponentModules.Atl_Nrec == Components.ModuleCOde (noindex)
and Components.Atl_nRec == ComponentUsers.ResCode
and ComponentUsers.USERCODE ==x$users.atl_nrec
));
Browse Users 'Пользователи' (,,Sci13Esc);
Table x$users;
Fields
x$users.XU$useroffice 'Офис' :[3];
x$users.XU$LOGINNAME 'Идентификатор' : [10];
x$users.XU$FULLNAME 'Имя пользователя' : [77];
end;
end.

Не используте view as Select *, это черевато сетевым трафиком,вместо используемых полей будете качать на станцию все поля таблицы. Берегите электричество :grin:

Добавлено: 02 июн 2009, 11:58
m0p3e
san
Не используте view as Select *, это черевато сетевым трафиком,вместо используемых полей будете качать на станцию все поля таблицы.
Вот так категорически? А если они мне все и нужны? :)