AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 26.07.2017, 20:28   #1  
NetBus ist offline
NetBus
Участник
 
200 / 85 (3) ++++
Registriert seit: 08.07.2005
Ort: Москва
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

Geändert von NetBus (26.07.2017 um 20:29 Uhr) Grund: добавление
Alt 27.07.2017, 06:45   #2  
Player1 ist offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Registriert seit: 21.04.2008
Как вариант не делать relation, а сделать составной range в executeQuery() у Table2. А в active() у Table1 вызывать Table2_ds.executeQuery();
This post has been rated by: NetBus (2), S.Kuskov (2).
Alt 27.07.2017, 14:22   #3  
dech ist offline
dech
Участник
Benutzerbild von dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Registriert seit: 25.06.2009
Ort: Омск
Blog-Einträge: 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
This post has been rated by: NetBus (2).
Alt 27.07.2017, 17:38   #4  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.449 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Link и DynaLink это разные вещи. При соединении через dynalink не будет доступна родитетельская таблица в запросе executeQuery
Alt 28.07.2017, 11:12   #5  
NetBus ist offline
NetBus
Участник
 
200 / 85 (3) ++++
Registriert seit: 08.07.2005
Ort: Москва
Zitat:
Zitat von Player1 Beitrag anzeigen
Как вариант не делать relation, а сделать составной range в executeQuery() у Table2. А в active() у Table1 вызывать Table2_ds.executeQuery();
В точку, - реализовал именно так.
Спасибо огромное за участие в решении проблемы.
На sys слое подобный подход реализован на форме AssetPosting.
Stichworte
related tables, relation, relationship

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 04:10 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.