AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.01.2011, 13:15   #1  
Акавешка is offline
Акавешка
Участник
 
36 / 10 (1) +
Регистрация: 03.08.2005
? Связь между таблицами в форме
Есть форма с 3-мя источниками данных.
1 таблица основная
2 таблица связана первой по relation:
2table.1tablerecid = 1table.recid
на форме для нее прописан join с link type active
3 таблица связана с первой по relation:
2table.emplid= 1table.emplid
на форме для нее прописан join с link type active
на 3 таблицу накладывается range в методах ds init и queryrange
значение range берется из 2 таблицы

При запуске форме все связи отрабатываются корректно. Но при переходе на следующую запись 1 таблицы происходит сначала накладывание range на третью таблицу и только потом обновление ds второй таблицы по relation с первой. Таким образом мы получаем не верный range второй таблицы - он накладывается от предыдущей записи. В каком методе что нужно дописать?
Старый 27.01.2011, 13:21   #2  
AX2009
Гость
 
n/a
рэнж апплаить не в инит а в ехекут кйуери
Старый 27.01.2011, 13:29   #3  
Акавешка is offline
Акавешка
Участник
 
36 / 10 (1) +
Регистрация: 03.08.2005
AX2009 убрала из init, оставила только в executequery, ничего не изменилось
Старый 27.01.2011, 13:43   #4  
AX2009
Гость
 
n/a
я щас токо заметил что ренж из 2й таблицы
вообще связь по-дибильному сделана, так не делают в аксапте. поясните что вы делаете и мы вам подскажем как делать тру-вей
Старый 27.01.2011, 13:45   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Акавешка Посмотреть сообщение
на 3 таблицу накладывается range в методах ds init и queryrange
значение range берется из 2 таблицы
по мойму в этом случае логично менять значение рэньжа в методе active второго DS

Цитата:
Сообщение от Акавешка Посмотреть сообщение
3 таблица связана с первой по relation:
2table.emplid= 1table.emplid
Я так понимаю имелось в виду "3table.emplid= 1table.emplid"? Опечатка?

P.S.: Если есть возможность вытащить EmplId в таблицу 2, то тогда связь третьей таблицы со второй можно сделать без искуственного range. К стати этого можно добиться и без изменения структуры таблиц, при помощи View!
Старый 28.01.2011, 07:00   #6  
Акавешка is offline
Акавешка
Участник
 
36 / 10 (1) +
Регистрация: 03.08.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Я так понимаю имелось в виду "3table.emplid= 1table.emplid"? Опечатка?
Да, опечатка вышла
Сделала range в active второго датасоурса, теперь квери формируется верный, через info проверила, но данные в гриде отображаются по-прежнему: даные третьей таблицы фильтруются по range предыдущей строки, при этом связь с первой головной таблицей срабатывает по emplid. research второго датасоурса сделала
Немного поясню суть:
В первой таблице есть данные по сотрудникам. Вторая содержит только связку по recid с первой таблицей и еще два поля - года (с и по). Третья таблица содержит код сотрудника, суммы начислений помесячно. После перехода на следующую строку первой таблицы, вторая таблица тоже обновляется по связке recid, года правильно отображаются в форме. В active второй таблицы теперь накладывается фильтр на третью таблицу на поле период (отбираются записи за нужные года). Так вот грид третьей таблицы отображает данные нужного сотрудника, но года берутся от предыдущей записи. Хотя сам квери формируется правильный. Ниже этого грида есть поле, которое суммирует все выбранные начисления - оно показывает верную сумму, т.е. сумму при правильном range. Не пойму, что же с гридом, в чем дело ...

Последний раз редактировалось Акавешка; 28.01.2011 в 08:30.
Старый 30.01.2011, 20:06   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
По идее всё должно работать (третий грид должен перерисовываться), если вызывать метод research третьего источника данных сразу после обновления Range. Т.е. там же в методе active второго датасурса. Приведите код метода active(), может вы там что-нибудь намудрили.

Ещё вопрос по архитектуре:
Цитата:
Сообщение от Акавешка Посмотреть сообщение
Вторая содержит только связку по recid с первой таблицей и еще два поля - года (с и по).
Чем вызвано использование поля RecId для связи таблиц? Таблица2 может содержать ссылки не только на таблицу сотрудников, но и на другие?

И ещё такой вопрос:
Обязательно ли отображать все три таблицы на одной форме? Т.е. действительно ли необходимо предоставлять возможность оперативной смены одновременно и сотрудника и периода? Может выбрать наиболее частый сценарий и либо по сотруднику проваливаться в список сумм по периодам, либо по периоду проваливаться в список сумм по сотрудникам. Как вариант, для каждого из двух сценариев разработать свою форму или проcто вкладку (TabPage).

Последний раз редактировалось S.Kuskov; 30.01.2011 в 20:22.
За это сообщение автора поблагодарили: Акавешка (1).
Старый 31.01.2011, 08:11   #9  
Акавешка is offline
Акавешка
Участник
 
36 / 10 (1) +
Регистрация: 03.08.2005
S.Kuskov, спасибо большое за помощь. После выходных голова заработала яснее Переделала форму, избавилась от одного ds, все намного упростилось и заработало
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Связи между таблицами Rem DAX: Программирование 19 26.04.2012 12:00
Разница между пустой Группой на форме, и группой в которую включён элемент 3oppo DAX: Программирование 8 26.12.2006 10:47
связь между таблицами Valia DAX: Программирование 2 09.10.2003 18:36

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:12.