27.01.2011, 13:15 | #1 |
Участник
|
Связь между таблицами в форме
Есть форма с 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 |
Гость
|
рэнж апплаить не в инит а в ехекут кйуери
|
|
27.01.2011, 13:29 | #3 |
Участник
|
AX2009 убрала из init, оставила только в executequery, ничего не изменилось
|
|
27.01.2011, 13:43 | #4 |
Гость
|
я щас токо заметил что ренж из 2й таблицы
вообще связь по-дибильному сделана, так не делают в аксапте. поясните что вы делаете и мы вам подскажем как делать тру-вей |
|
27.01.2011, 13:45 | #5 |
Участник
|
Цитата:
Я так понимаю имелось в виду "3table.emplid= 1table.emplid"? Опечатка? P.S.: Если есть возможность вытащить EmplId в таблицу 2, то тогда связь третьей таблицы со второй можно сделать без искуственного range. К стати этого можно добиться и без изменения структуры таблиц, при помощи View! |
|
28.01.2011, 07:00 | #6 |
Участник
|
Цитата:
Сделала range в active второго датасоурса, теперь квери формируется верный, через info проверила, но данные в гриде отображаются по-прежнему: даные третьей таблицы фильтруются по range предыдущей строки, при этом связь с первой головной таблицей срабатывает по emplid. research второго датасоурса сделала Немного поясню суть: В первой таблице есть данные по сотрудникам. Вторая содержит только связку по recid с первой таблицей и еще два поля - года (с и по). Третья таблица содержит код сотрудника, суммы начислений помесячно. После перехода на следующую строку первой таблицы, вторая таблица тоже обновляется по связке recid, года правильно отображаются в форме. В active второй таблицы теперь накладывается фильтр на третью таблицу на поле период (отбираются записи за нужные года). Так вот грид третьей таблицы отображает данные нужного сотрудника, но года берутся от предыдущей записи. Хотя сам квери формируется правильный. Ниже этого грида есть поле, которое суммирует все выбранные начисления - оно показывает верную сумму, т.е. сумму при правильном range. Не пойму, что же с гридом, в чем дело ... Последний раз редактировалось Акавешка; 28.01.2011 в 08:30. |
|
30.01.2011, 19:53 | #7 |
Участник
|
|
|
30.01.2011, 20:06 | #8 |
Участник
|
По идее всё должно работать (третий грид должен перерисовываться), если вызывать метод research третьего источника данных сразу после обновления Range. Т.е. там же в методе active второго датасурса. Приведите код метода active(), может вы там что-нибудь намудрили.
Ещё вопрос по архитектуре: Цитата:
И ещё такой вопрос: Обязательно ли отображать все три таблицы на одной форме? Т.е. действительно ли необходимо предоставлять возможность оперативной смены одновременно и сотрудника и периода? Может выбрать наиболее частый сценарий и либо по сотруднику проваливаться в список сумм по периодам, либо по периоду проваливаться в список сумм по сотрудникам. Как вариант, для каждого из двух сценариев разработать свою форму или проcто вкладку (TabPage). Последний раз редактировалось S.Kuskov; 30.01.2011 в 20:22. |
|
|
За это сообщение автора поблагодарили: Акавешка (1). |
31.01.2011, 08:11 | #9 |
Участник
|
S.Kuskov, спасибо большое за помощь. После выходных голова заработала яснее Переделала форму, избавилась от одного ds, все намного упростилось и заработало
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Связи между таблицами | 19 | |||
Разница между пустой Группой на форме, и группой в которую включён элемент | 8 | |||
связь между таблицами | 2 |
|