Программирование на Атлантисе (VIP, FCOM, ARD), FastReport
	Модераторы:  m0p3e , edward_K , Модераторы 
			
		
		
			
				
																			
								niteo 							 
						Постоянный обитатель 			
		Сообщения:  151 Зарегистрирован:  17 сен 2009, 11:39
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 niteo  12 дек 2014, 17:14 
			
			
			
			
			
			Добрый день. 
Необходимо сделать несколько 
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.
Данные есть только на первой вкладке, на второй - пусто. Запрос рабочий. Подскажите, в чём "засада"?
 
		 
				
		
		 
	 
				
		
		
			
				
																			
								m0p3e 							 
						Местный житель 			
		Сообщения:  1386 Зарегистрирован:  29 мар 2005, 17:49Откуда:  Москва 
		
						
					
													
							
						
									
						Сообщение 
					 
								 m0p3e  12 дек 2014, 17:22 
			
			
			
			
			
			browse без table - деньги на ветер 
 
		 
				
		
		 
	 
				
		
		
			
				
																			
								niteo 							 
						Постоянный обитатель 			
		Сообщения:  151 Зарегистрирован:  17 сен 2009, 11:39
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 niteo  12 дек 2014, 17:36 
			
			
			
			
			
			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  ?
 
		 
				
		
		 
	 
				
		
		
			
				
																			
								m0p3e 							 
						Местный житель 			
		Сообщения:  1386 Зарегистрирован:  29 мар 2005, 17:49Откуда:  Москва 
		
						
					
													
							
						
									
						Сообщение 
					 
								 m0p3e  12 дек 2014, 18:01 
			
			
			
			
			
			Никогда не использую именованные 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;
 
		 
				
		
		 
	 
				
		
		
			
				
																			
								niteo 							 
						Постоянный обитатель 			
		Сообщения:  151 Зарегистрирован:  17 сен 2009, 11:39
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 niteo  12 дек 2014, 18:12 
			
			
			
			
			
			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  в интерфейсе?
 
		 
				
		
		 
	 
				
		
		
			
				
																			
								Ольга 							 
						Постоянный обитатель 			
		Сообщения:  135 Зарегистрирован:  29 мар 2005, 17:49 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Ольга  12 дек 2014, 18:16 
			
			
			
			
			
			Можно.
			
			
									
						
										
						 
		 
				
		
		 
	 
				
		
		
			
				
																			
								niteo 							 
						Постоянный обитатель 			
		Сообщения:  151 Зарегистрирован:  17 сен 2009, 11:39
				Контактная информация: 
				
			 
				
		 
		
						
					
													
							
						
									
						Сообщение 
					 
								 niteo  12 дек 2014, 18:27 
			
			
			
			
			
			Ольга писал(а): Можно.
Вероятно вы правы. Избавился от строчки 
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-й таблице, автоматически перемещаюсь по другой 
 
		 
				
		
		 
	 
				
		
		
			
				
																			
								Ольга 							 
						Постоянный обитатель 			
		Сообщения:  135 Зарегистрирован:  29 мар 2005, 17:49 
		
						
					
													
							
						
									
						Сообщение 
					 
								 Ольга  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, к примеру
 
		 
				
		
		 
	 
				
		
		
			
				
																			
								m0p3e 							 
						Местный житель 			
		Сообщения:  1386 Зарегистрирован:  29 мар 2005, 17:49Откуда:  Москва 
		
						
					
													
							
						
									
						Сообщение 
					 
								 m0p3e  12 дек 2014, 21:26 
			
			
			
			
			
			Либо второй вариант - использовать одну таблицу и bounds-ы, переключаемые в cmChangeTabbedSheetFormat;