| 
			
			 | 
		#1 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
			
			
			Тип связи
			 
			
			Подскажите пожалуйста, как в Аксапте можно отобразить в Grid'е информацию из двух таблиц между которыми связь один(или много) к одному (или нулю). 
		
		
		
		
		
		
		
	Поясню: Есть таблица: А: id : string name : string Теперь хочется некоторым строкам этой таблицы (но не всем) сопоставить текстовое примечание. Можно просто добавить еще одно поле в эту таблицу, но в силу некоторых причин хочется вынести эту информацию в отдельную таблицу. Делаю так: Создаем тип данных Тип : String. Relation == A.id Создаем таблицу Б: id :Тип txt : String То есть каждой строке из А может соответствовать примечание в Б (на самом деле даже несколько - но это уже нежелательный эффект, на который пока я стараюсь не обращать внимание :-)), а может и не соответствовать ни одного. Теперь необходимо отобразить на форме следующую информацию: А.id A.name Б.id Б.txt Grid.DataSource = Б A.JoinSource = Б А.LinkType = InnerJion Всегда это помогало. А теперь столкнулся с ситуацией, когда некоторым строкам в А нет соответствующих записи (ей) в Б и они соответственно не выводятся. Как поступить в этой ситуации ? а) как задать отношения между таблицами, чтобы все связи из А отображались на Grid'e б) как в Аксапте задается связь между таблицами один к одному (нулю).  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			стандартно должен работать тип связи OuterJoin. 
		
		
		
		
		
		
		
	ЕСЛИ же не работает И ты используешь форму, которую создавал не сам, ТО смотри в код стандартной формы. Там скорее всего в executeQuery query пересоздается и тип связи переустанавливается.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			 mazzy   
стандартно должен работать тип связи OuterJoin. ЕСЛИ же не работает И ты используешь форму, которую создавал не сам, ТО смотри в код стандартной формы. Там скорее всего в executeQuery query пересоздается и тип связи переустанавливается. Попробую приложить файл проекта. Если это Вас не затруднит, не могли бы Вы его посмотреть и объяснить где и что мне нужно поправить.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			хорошо. взял. 
		
		
		
		
		
		
		
	если можно, посмотрю вечером.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Большое спасибо.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Посмотрел. У меня связывает. Примечания показывает. 
		
		
		
			Если к одной записи несколько примечаний, то показывает несколько примечаний. Надо только перехватывать редактирование записей и делать refresh формы. А так все нормально. Что можно было бы добавить - это дать тип tbl1.id = dem_t Но и без этого работает.  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Примечания показывает. 
Если к одной записи несколько примечаний, то показывает несколько примечаний. У меня: tbl1: 1 one 2 two 3 three tbl2: 1 prim1 2 prim2 в форме на Grid: 1 one prim1 2 two prim2 А МНЕ НАДО: 1 one prim1 2 two prim2 3 Three  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я решил эту проблему следующим образом: 
		
		
		
		
		
		
		
	1. В таблицу tbl2добавил метод: static str cd(str 100 i) { tbl2 tb; select * from tb where tb.id == i; return tb.txt; } 2. В tbl1 добавил следующий метод: display str clr() { return tbl2::cd(this.id); } 3. Добавил в Grid текстовое поле: DataSource = tbl1 DataMethod = clr Это работает, но уж больно все это сложнои неудобно (на мой взгляд). Может есть более простые варианты ?  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			а.... ты в этом смысле... 
		
		
		
			дык, у тебя в фоме связь вывернута наизнанку.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Для Кучи. 
		
		
		
		
		
		
		
	Смотри: таблицы table1 (id,table2_id), table2 (id,name) table1 (1,NULL) (2,1) (3,NULL) (4,2) (5,3) table2 (1,'Вася') (2,'Петя') (3,'Гога') (4,'Степа') Select table1.id,table2.name from table1 left outer join table2 on table1.table2_id = table2.id получится 1,NULL 2,'Вася' 3,NULL 4,'Петя' 5,'Гога' это левый outer join Select table1.id,table2.name from table1,table2 where table1.table2_id = table2.id 2,'Вася' 4,'Петя' 5,'Гога' типичный пример inner joinа  | 
| 
	
 |