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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2016, 12:03   #1  
Alucardkds is offline
Alucardkds
Участник
 
8 / 10 (1) +
Регистрация: 04.10.2014
Цитата:
У Вас эти две таблицы никак не связаны между собой? Тот код, что Вы привели - именно так и работает. Т.е. на каждую запись Table1 в отчет выводятся ВСЕ записи Table2? Или все-таки между таблицами есть связь?
Да, эти таблицы связаны. В обеих таблицах есть поле DepartmentId и при создании записи в Table1 могут быть созданы только те, по которым есть записи в Table2.

И моя идея реализации работает по 1-ому варианту, да.
Но если есть что-то более оптимальное - с радостью выслушаю совет..

Последний раз редактировалось Alucardkds; 31.03.2016 в 12:15.
Старый 31.03.2016, 13:09   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,719 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Alucardkds Посмотреть сообщение
Да, эти таблицы связаны. В обеих таблицах есть поле DepartmentId и при создании записи в Table1 могут быть созданы только те, по которым есть записи в Table2.

И моя идея реализации работает по 1-ому варианту, да.
Но если есть что-то более оптимальное - с радостью выслушаю совет..
X++:
void initQuery()
{
    query query1 = new query();
   QueryBuildDataSource    qbds1, qbds2;
    ;

    qbds1= query1.addDataSource(tableNum(Table1));
    qbds2= qbds1.addDataSource(tablenum(Table2));

    // Если есть явно прописанные Relation на таблицах или в EDT
    //qbds2.relation(true);
    // Если нет, то указать объединение явно
    qbds2.addLink(fieldnum(Table1, DepartmentId), fieldnum(Table2, DepartmentId))

    // Явное указание полей, которые будут отображены в форме диалога
    qbds1.addRange(fieldnum(Table1, Field1));
    qbds2.addRange(fieldnum(Table2, Field1));

    queryrun1 = new queryRun(query1);
}
X++:
void printSheet1()
{
...
    EDT    edt1, edt2;
    Table1    table1;
    Table2    table2;
...
    ;
    while (queryrun1.next())
    {
        table1 = queryrun1.get(tablenum(Table1));
        table2 = queryrun1.get(tableNum(Table2));

        edt1 = Table1.Field1;
        edt2 = Table2.Field2;
        (...)
  }
}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: mazzy (2), Alucardkds (1).
Старый 31.03.2016, 14:29   #3  
Alucardkds is offline
Alucardkds
Участник
 
8 / 10 (1) +
Регистрация: 04.10.2014
Странно, но с предложенным вариантом ничего не хочет выводить.
Все whil'ы успешно пропускает как будто не сформировал query.
Хотя в initQuery заходит и даже успешно запросы делает в датасурс.
Теги
query, queryrun

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxhints: Query datasource FirstOnly property Blog bot DAX Blogs 0 22.03.2016 09:11
emeadaxsupport: Microsoft Dynamics AX general performance analysis scripts page 5 Blog bot DAX Blogs 0 01.09.2014 14:11
AIF: OData Query Service Blog bot DAX Blogs 0 24.08.2011 09:11
jinx: Dynamics AX – Query-Ranges und Filtereinstellungen des Benutzers Blog bot DAX auf Deutsch 0 04.02.2010 00:05
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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