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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.07.2014, 17:43   #1  
kitty is offline
kitty
Участник
 
354 / 26 (1) +++
Регистрация: 24.05.2005
Relation между таблицей и View?
Есть три таблицы
MyHeader
MyTable (на таблице есть relation к Myheader по полю HeaderId)
MyLine (на таблице есть relation к MyTable по полю TableId)

Нужно создать форму, которая будет в верхнем гриде показывать Header, а в нижнем суммарные данные по соответствующим MyLine.
Создаю MyView, куда кладу MyTable, MyLine. В MyTable указываю группировку по HeaderId, на MyLine по нужным мне полям

Если кладу на форму теперь MyHeader и MyView, но почему-то не создается диналинк по HeaderId между MyHeader и MyView и поэтому при перемещении по строкам верхнемго грида, записи в нижнем не меняются.
Если просто создать запрос на основе MyHeader и MyView и выставить relations = true, то видно, что диналинка нет(

Что не так?

AX2012 R2
Старый 21.07.2014, 17:54   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,873 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
А у вас в датасорсах прописана связь между ними ?
Какой родительский а какой дочерний ?
Старый 21.07.2014, 18:21   #3  
kitty is offline
kitty
Участник
 
354 / 26 (1) +++
Регистрация: 24.05.2005
На форме:
MyHeader - родительский
MyView - дочерний
Старый 21.07.2014, 21:47   #4  
kitty is offline
kitty
Участник
 
354 / 26 (1) +++
Регистрация: 24.05.2005
Какая-то ерундень из-за View!

Я пытаюсь даже явно добавить addLink между Header и записями из View в init() датасоурса формы.
Когда делаю addLink в init() View, то получаю "The data source is not embedded within a (parent) data source "
Если же присоединять Header к View ( в init() header), то все срабатывает, вот только, ест-но записи на форме сразу задваиваются, тк relation 1(header):N (записей в View).

Вот и пользуйся этими View ...
Старый 22.07.2014, 00:19   #5  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Попробуйте не relation link прописывать, а в executeQuery на View добавить range:
с помощью функции findOrCreateRange_W например с фильтром по полю по которому идёт джойн. Ведь там же джойнмод стоит active или delayed, потому оно и не даёт link добавить, ведь датасорс View не заджойнен к MyTable по настоящему.
Старый 22.07.2014, 08:31   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от kitty Посмотреть сообщение
Какая-то ерундень из-за View!

Я пытаюсь даже явно добавить addLink между Header и записями из View в init() датасоурса формы.
Когда делаю addLink в init() View, то получаю "The data source is not embedded within a (parent) data source "
Все правильно вам аксапта пишет. Потому что в этом случае не addLink нужно использовать а addDynaLink. Разница в типе связи между двумя датасорсами. Одно дело, когда соединяемые источники данных образуют единый запрос (тип связи join, exists, outer) а другое - два самостоятельных запроса связь между которыми пересчитывается при изменении позиции активной строки главной таблицы (delayed)

Цитата:
Сообщение от VORP Посмотреть сообщение
Попробуйте не relation link прописывать, а в executeQuery на View добавить range:
с помощью функции findOrCreateRange_W например с фильтром по полю по которому идёт джойн. Ведь там же джойнмод стоит active или delayed, потому оно и не даёт link добавить, ведь датасорс View не заджойнен к MyTable по настоящему.
Тогда значение этого Range прийдется поддерживать и менять на актуальный при каждом изменении позиции активной строки главного датасурса. Чтобы не заставлять программиста этим заниматься в системе и реализован механизм Dynalink, который ровно это и делает.

Последний раз редактировалось S.Kuskov; 22.07.2014 в 08:35.
Старый 22.07.2014, 08:35   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Теперь по поводу того, почему этот Dynalink не формируется самостоятельно. У вас на каком уровне прописана связь между MyTable и MyHeader? на уровне таблицы или на уровне расширенного типа данных (как в предыдущих версиях)?

Нужно проверить, но мне кажется что и в предыдущих версиях аксапты связи с таблиц не переходили на View, только связи с EDT. Учитывая, что в последних версиях от связей на EDT отказались - ситуация тупиковая. Разработчикам аксапты нужно было либо реализовать поддержку использования на View связей с соответствующих таблиц, либо создать на View такой-же узел Relation как и на таблицах, для возможности вручную прописать нужные связи.
За это сообщение автора поблагодарили: kitty (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: The 'view details' feature will not work on an EDT field when the field has a relation defined in the 'table references' subnode. Blog bot DAX Blogs 0 26.01.2013 02:14
ax-erp: EDT Relation Migration Tool [AX 2012] Blog bot DAX Blogs 0 14.12.2012 23:11
dynamicsaxbi: Better together: Microsoft Dynamics AX 2012 R2 and SQL Server Power View Blog bot DAX Blogs 0 12.12.2012 13:11
Изменение Relation у View Paul_ST DAX: Программирование 3 14.12.2004 06:51
Тип Relation в View kashperuk DAX: Программирование 0 06.12.2004 17:47
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:47.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.