|  12.03.2014, 10:39 | #1 | 
| Участник |  GRID из двух таблиц и поиск нужной строчки 
			
			AX3.0 Здравствуйте друзья. Помогите с следующей проблемой. Есть GRID из двух таблиц, назовем их Tabl1 и Tabl2. В свойствах Tabl2 стоит InnerJoin к таблице Tabl1. Данные в таблице Tabl1 IdT1 - Name 1 - Набор1 2 - Набор2 3 - Набор3 Данные в таблице Tabl2 IdT1 - IdT2 - Name - NSort 1 - 1 - Предмет1 - 6 1 - 2 - Предмет2 - 2 2 - 3 - Предмет3 - 1 2 - 4 - Предмет4 - 4 3 - 5 - Предмет5 - 8 3 - 6 - Предмет6 - 7 3 - 7 - Предмет7 - 3 1 - 8 - Предмет8 - 5 В итоге в GRIDе отображаются следующие данные; NameTabl1 - NameTabl2 Набор2 - Предмет3 Набор1 - Предмет2 Набор3 - Предмет7 Набор2 - Предмет4 Набор1 - Предмет8 Набор1 - Предмет1 Набор3 - Предмет6 Набор3 - Предмет5 После изменения данных у таблицы Tabl2 в столбце NSort. Делаю у Tabl1 research и findRecord и попадает на первую запись из Tabl1(Оно и логично). Пример: Меняем местам строчки "Набор1 - Предмет8" и "Набор1 - Предмет1", стояли мы на строчке "Набор1 - Предмет8". В результате курсор стает на "Набор1 - Предмет2", а нужно на "Набор1 - Предмет8". Вопрос можно ли как-то правильно найти строчку по таблице Tabl2? | 
|  | 
|  12.03.2014, 12:50 | #2 | 
| Участник | 
			
			Сдается мне, что в общем случае (при соединении многие ко многим) поиск строки по подчиненной таблице, возможен только через ручной перебор строк ds.next().  Если в вашем случае записи в подчиненной таблице после соединения с первой таблицей остаются уникальными (тип соединения один ко многим, а не многие ко многим), то этим можно воспользоваться. Измените порядок соединения таблиц, сделайте таблицу с уникальными записями главной, а не подчиненной. | 
|  | 
|  12.03.2014, 12:59 | #3 | 
| Участник | 
			
			Спасибо, сейчас работает через переборку записей (ds.next), но он почему-то роняет AX иногда. Я вот и подумал, что должен существовать более правильный метод, но видимо его нет =(
		 | 
|  | 
|  12.03.2014, 13:28 | #4 | 
| Ищущий знания... | 
			
			Не знаю подойдет ли под Ваш случай, когда две таблицы отображаются в одном Grid'е, у меня была немного похожая задача, при изменении таблицы на одной вкладке, обновлять другую таблицу, на другой вкладке. Решил я это следующим образом. На методе write (на ДатаСорсе формы) в таблице, которая изменяется, после super() написал следующий код: X++: RefreshTable_ds.findValue(fieldNum(RefreshTable, ItemId), UpdateTable.ItemId);
RefreshTable_ds.reread();
RefreshTable_ds.refresh();В данном виде все нормально работает, обновляется и отображается нормально. И на удивление, изменение таблицы не тормозит (я думал будут тормоза). 
				__________________ "Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем | 
|  | 
|  12.03.2014, 13:34 | #5 | 
| Участник | Цитата: 
		
			Сообщение от lev
			   Не знаю подойдет ли под Ваш случай, когда две таблицы отображаются в одном Grid'е, у меня была немного похожая задача, при изменении таблицы на одной вкладке, обновлять другую таблицу, на другой вкладке. Решил я это следующим образом. На методе write (на ДатаСорсе формы) в таблице, которая изменяется, после super() написал следующий код: X++: RefreshTable_ds.findValue(fieldNum(RefreshTable, ItemId), UpdateTable.ItemId);
RefreshTable_ds.reread();
RefreshTable_ds.refresh();В данном виде все нормально работает, обновляется и отображается нормально. И на удивление, изменение таблицы не тормозит (я думал будут тормоза). | 
|  | 
| Теги | 
| findrecord, grid, research | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| Связь двух таблиц | 7 | |||
| подсчет строк у несколких таблиц и вывод на grid | 1 | |||
| Связь двух таблиц | 10 | |||
| поля из связанных таблиц в Grid | 2 | |||
| Поиск в Grid по полю из другой таблицы | 9 | |||
| 
 |