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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2017, 20:28   #1  
NetBus is offline
NetBus
Участник
 
200 / 85 (3) ++++
Регистрация: 08.07.2005
Адрес: Москва
Relation между _DS через ИЛИ
Лето. Жара. Мозг плавиться и тривиальная (!?) задача не хочет решаться. Помогите кто чем может.
Есть на форме в dataSource 2 таблицы.

Table1
поля
tfield11
tfield12
tfield13
tfield_n

Table2
поля
tfield21
tfield22
tfield23
tfield_n

Требуется на первом grid показать все строки таблицы Table1
на втором grid строки Тable2, так что tfield11 == tfield21 || tfield12 == tfield22 || tfield13 == tfield23
Как сделать такой relation между таблицами?

Dax 2009

Последний раз редактировалось NetBus; 26.07.2017 в 20:29. Причина: добавление
Старый 27.07.2017, 06:45   #2  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Как вариант не делать relation, а сделать составной range в executeQuery() у Table2. А в active() у Table1 вызывать Table2_ds.executeQuery();
За это сообщение автора поблагодарили: NetBus (2), S.Kuskov (2).
Старый 27.07.2017, 14:22   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Сделал пример по 2 полям TestInt и TestStr через OR-условие.
Если TestTable1 содержит записи
  • 1 - A
  • 2 - B
  • 3 - C
А TestTable2 содержит
  • 3 - D
  • 4 - E
  • 5 - A
То следующий джоб вернёт
  • 5 - A
  • 3 - D
Прикрутите его к executeQuery() и должно заработать.
X++:
static void Job44(Args _args)
{
    Query                   query = new Query();
    QueryBuildDataSource    qbds1, qbds2;
    QueryRun                qr;
    TestTable2              tt2;
    ;

    qbds1 = query.addDataSource(tablenum(TestTable1));
    qbds1.name('T1');
    qbds2 = qbds1.addDataSource(tablenum(TestTable2));
    qbds2.name('T2');
    qbds2.addRange(fieldnum(TestTable2, DataAreaId)).value(strfmt('((%1.%3==%2.%3) || (%1.%4==%2.%4))',
        qbds1.name(),
        qbds2.name(),
        fieldstr(TestTable1, TestInt),
        fieldstr(TestTable1, TestStr)
        ));

    qr = new QueryRun(query);

    while (qr.next())
    {
        tt2 = qr.getNo(2);
        info(strfmt("%1 - %2", tt2.TestInt, tt2.TestStr));
    }
}
__________________
// no comments
За это сообщение автора поблагодарили: NetBus (2).
Старый 27.07.2017, 17:38   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Link и DynaLink это разные вещи. При соединении через dynalink не будет доступна родитетельская таблица в запросе executeQuery
Старый 28.07.2017, 11:12   #5  
NetBus is offline
NetBus
Участник
 
200 / 85 (3) ++++
Регистрация: 08.07.2005
Адрес: Москва
Цитата:
Сообщение от Player1 Посмотреть сообщение
Как вариант не делать relation, а сделать составной range в executeQuery() у Table2. А в active() у Table1 вызывать Table2_ds.executeQuery();
В точку, - реализовал именно так.
Спасибо огромное за участие в решении проблемы.
На sys слое подобный подход реализован на форме AssetPosting.
Теги
related tables, relation, relationship

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ax2009 RU4 RHRMOrderTrans_ds.AllowEdit(false) и validationWrite Dimitori DAX: Программирование 2 08.04.2011 11:35
kamalblogs: Creating Edit methods for DS that don’t allow editing in Dynamics ax Blog bot DAX Blogs 8 03.01.2011 10:48
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
Включение и отключение relation между двумя таблицами? Hidden DAX: Программирование 2 08.02.2007 17:20
Как передавать в вызываемый объект запись нужного DS? malex DAX: Программирование 2 06.07.2004 12:06
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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