Страница 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;