26.07.2017, 20:28 | #1 |
Участник
|
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 |
Участник
|
Как вариант не делать relation, а сделать составной range в executeQuery() у Table2. А в active() у Table1 вызывать Table2_ds.executeQuery();
|
|
|
За это сообщение автора поблагодарили: NetBus (2), S.Kuskov (2). |
27.07.2017, 14:22 | #3 |
Участник
|
Сделал пример по 2 полям TestInt и TestStr через OR-условие.
Если TestTable1 содержит записи
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 |
Участник
|
Link и DynaLink это разные вещи. При соединении через dynalink не будет доступна родитетельская таблица в запросе executeQuery
|
|
28.07.2017, 11:12 | #5 |
Участник
|
Цитата:
Спасибо огромное за участие в решении проблемы. На sys слое подобный подход реализован на форме AssetPosting. |
|
Теги |
related tables, relation, relationship |
|
|