Страница 1 из 1
Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 17:14
niteo
Добрый день.
Необходимо сделать несколько
browse в интерфейсе. Делаю так:
Код: Выделить всё
interface iPers 'Работа с сотрудниками';
create view vAllPers
var
ips: string;
as select persons.nrec, persons.department, catalogs.nrec
from persons, catalogs
where ((persons.department == catalogs.nrec ));
create view vRabPers
var
ips: string;
as select persons.nrec, persons.department, catalogs.nrec
from persons, catalogs
where (( 'С' == persons.isemployee and persons.department == catalogs.nrec ));
var ind: integer;
tabbedsheet left tabbed
browse AllBrowser 'Все сотрудники';
fields
vAllPers.ips 'ИПС': protect, [20];
vAllPers.persons.fio 'ФИО сотрудника': protect, [25];
vAllPers.catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
browse RabBrowser 'Работающие';
fields
vRabPers.ips 'ИПС': protect, [20];
vRabPers.persons.fio 'ФИО сотрудника': protect, [25];
vRabPers.catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
end; //tabbedsheet
handleEvent
cmInit: {};
cmChangeTabbedSheetFormat:{};
cmDefault: ind := 0;
end;
end.
Данные есть только на первой вкладке, на второй - пусто. Запрос рабочий. Подскажите, в чём "засада"?
Re: Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 17:22
m0p3e
browse без table - деньги на ветер
Re: Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 17:36
niteo
m0p3e писал(а):browse без table - деньги на ветер
Спасибо за отклик!!!
Хм.. добавил строчку
viewTable, результат не изменился.
Сейчас так:
Код: Выделить всё
browse AllBrowser 'Все сотрудники';
viewTable;
fields
vAllPers.ips 'ИПС': protect, [20];
vAllPers.persons.fio 'ФИО сотрудника': protect, [25];
vAllPers.catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
browse RabBrowser 'Работающие';
viewTable;
fields
vRabPers.ips 'ИПС': protect, [20];
vRabPers.persons.fio 'ФИО сотрудника': protect, [25];
vRabPers.catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
Или это надо делать во временной таблице и использовать и использовать ключевое слово
table ?
Re: Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 18:01
m0p3e
Никогда не использую именованные View, но видимо нужно так:
Код: Выделить всё
browse AllBrowser 'Все сотрудники';
Table vAllPers.Persons;
fields
vAllPers.ips 'ИПС': protect, [20];
vAllPers.persons.fio 'ФИО сотрудника': protect, [25];
vAllPers.catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
browse RabBrowser 'Работающие';
Table vRabPers.Persons;
fields
vRabPers.ips 'ИПС': protect, [20];
vRabPers.persons.fio 'ФИО сотрудника': protect, [25];
vRabPers.catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
Re: Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 18:12
niteo
m0p3e писал(а):Никогда не использую именованные View, но видимо нужно так:
Код: Выделить всё
browse AllBrowser 'Все сотрудники';
Table vAllPers.Persons;
fields
vAllPers.ips 'ИПС': protect, [20];
vAllPers.persons.fio 'ФИО сотрудника': protect, [25];
vAllPers.catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
browse RabBrowser 'Работающие';
Table vRabPers.Persons;
fields
vRabPers.ips 'ИПС': protect, [20];
vRabPers.persons.fio 'ФИО сотрудника': protect, [25];
vRabPers.catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
Компилятор ругается:
Ошибка: Таблица vAllPers отсутствует в главной логической таблице vAllPers (стр....)
А вообще, в принципе, можно использовать 2
browse в интерфейсе?
Re: Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 18:16
Ольга
Можно.
Вот только, насколько я помню, имя view в интерфейсе игнорируется (я тоже не использую именованные view).
И потом, для работы с визуальными элементами вроде бы можно использовать только одну (первую) View, не?
В Вашем случае - сделайте одну view c синонимами для persons и catalogs, в первом BROWSE используйте table Persons, а во втором - соответственно - Table <синоним Persons> и все получится...
Re: Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 18:27
niteo
Ольга писал(а):Можно.
Вот только, насколько я помню, имя view в интерфейсе игнорируется (я тоже не использую именованные view).
И потом, для работы с визуальными элементами вроде бы можно использовать только одну (первую) View, не?
В Вашем случае - сделайте одну view c синонимами для persons и catalogs, в первом BROWSE используйте table Persons, а во втором - соответственно - Table <синоним Persons> и все получится...
Вероятно вы правы. Избавился от строчки
Table.vAllPers.Persons компилятор начал ругаться так:
Ошибка: Таблица vRabPers отсутствует в главной логической таблице vAllPers (стр....)
Увязал таблицы таким условием:
Код: Выделить всё
from persons, catalogs, persons ps, catalogs dep
where (( persons.department == catalogs.nrec and
persons.nrec == ps.nrec and
ps.department == dep.nrec));
При перемещении по 1-й таблице, автоматически перемещаюсь по другой
Re: Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 19:08
Ольга
Я имела ввиду примерно так:
Код: Выделить всё
create view vAllPers
var
ips: string;
as select persons.nrec, persons.department, catalogs.nrec
from persons, catalogs, Persons ps, Catalogs cs
where ((
persons.department == catalogs.nrec //это из первой вью
and 'С' == ps.isemployee and ps.department == cs.nrec // это из второй
));
var ind: integer;
tabbedsheet left tabbed
browse AllBrowser 'Все сотрудники';
Table Persons
fields
ips 'ИПС': protect, [20];
persons.fio 'ФИО сотрудника': protect, [25];
catalogs.name 'Подразделение сотрудника': protect, skip, [45];
end;
browse RabBrowser 'Работающие';
Table ps
fields
ips 'ИПС': protect, [20];
ps.fio 'ФИО сотрудника': protect, [25];
cs.name 'Подразделение сотрудника': protect, skip, [45];
end;
end; //tabbedsheet
Переменных, если нужно, можно тоже две, ips и ips2, к примеру
Re: Несколько browser в интерфейсе
Добавлено: 12 дек 2014, 21:26
m0p3e
Либо второй вариант - использовать одну таблицу и bounds-ы, переключаемые в cmChangeTabbedSheetFormat;