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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.03.2006, 13:13   #1  
andkud is offline
andkud
Участник
 
13 / 10 (1) +
Регистрация: 05.07.2005
Запрос в отчёте
У меня следующая задача. В отчёте сгрупировать строки по определённым полям и вывести сумму одного из полей.

Для этого я переопределяю метод init в Query:

Код:
public void init()

{
    Query                   q;
    QueryBuildDatasource    qbds;

    super();

    q    = this.query();
    qbds = q.dataSourceTable(tablenum(LedgerJournalTrans));
    qbds.orderMode(OrderMode::GROUPBY);

    qbds.addSortField(fieldnum(LedgerJournalTrans, TransDate));
    qbds.addSortField(fieldnum(LedgerJournalTrans, CurrencyCode));

    qbds.addSelectionField(fieldnum(LedgerJournalTrans, InvoiceAmountCur), SelectionField::SUM);

}
но запрос почему-то получается таким:

SELECT SUM(InvoiceAmountCur), SUM(InvoiceAmountCur), SUM(InvoiceAmountCur) FROM LedgerJournalTrans GROUP BY LedgerJournalTrans.OffsetAccountType DESC, LedgerJournalTrans.OffsetAccount DESC, LedgerJournalTrans.TransDate DESC, LedgerJournalTrans.CurrencyCode DESC, LedgerJournalTrans.Txt ASC, LedgerJournalTrans.AmountCurDebit ASC, LedgerJournalTrans.AmountCurCredit ASC, LedgerJournalTrans.PaymentStatus ASC WHERE ((JournalNum = ПА00005))

И в итоге ничего запрос не возвращает.
Не подскажите в чём дело? Как правильно нужно делать. Или другие варианты решения подобной задачи.
Старый 02.03.2006, 13:52   #2  
Jabberwocky is offline
Jabberwocky
Microsoft Dynamics
Аватар для Jabberwocky
Сотрудники Microsoft Dynamics
 
274 / 307 (11) ++++++
Регистрация: 02.09.2005
Адрес: Москва
А какие еще таблицы входят в этот запрос, кроме LedgerJournalTrans? Вероятно, LedgerJournalTrans с чем-то еще поджойнена....
Старый 02.03.2006, 14:00   #3  
andkud is offline
andkud
Участник
 
13 / 10 (1) +
Регистрация: 05.07.2005
Нет, там только эта таблица. Я переделываю стандартный отчёт CustVendPaymJournal.
Старый 02.03.2006, 14:13   #4  
SANTAN is offline
SANTAN
Участник
Аватар для SANTAN
 
20 / 12 (1) ++
Регистрация: 21.09.2005
Адрес: Kiev
А если добавить:

qbds.addSelectionField(fieldnum(LedgerJournalTrans, TransDate));
qbds.addSelectionField(fieldnum(LedgerJournalTrans, CurrencyCode));
Старый 02.03.2006, 14:19   #5  
andkud is offline
andkud
Участник
 
13 / 10 (1) +
Регистрация: 05.07.2005
то получается запрос(это я в дебаге смотрю):

SELECT SUM(InvoiceAmountCur), TransDate, CurrencyCode, SUM(InvoiceAmountCur), TransDate, CurrencyCode, SUM(InvoiceAmountCur), TransDate, CurrencyCode FROM LedgerJournalTrans GROUP BY LedgerJournalTrans.OffsetAccountType DESC, LedgerJournalTrans.OffsetAccount DESC, LedgerJournalTrans.TransDate DESC, LedgerJournalTrans.CurrencyCode DESC, LedgerJournalTrans.Txt ASC, LedgerJournalTrans.AmountCurDebit ASC, LedgerJournalTrans.AmountCurCredit ASC, LedgerJournalTrans.PaymentStatus ASC WHERE ((JournalNum = ПА00005))

и в итоге опять ничего не возвращается...
Старый 02.03.2006, 14:27   #6  
SANTAN is offline
SANTAN
Участник
Аватар для SANTAN
 
20 / 12 (1) ++
Регистрация: 21.09.2005
Адрес: Kiev
А если super() убрать и поменять на q.addDataSource?
Старый 02.03.2006, 14:35   #7  
andkud is offline
andkud
Участник
 
13 / 10 (1) +
Регистрация: 05.07.2005
Вот так?

Код:
  Query                   q;
    QueryBuildDatasource    qbds;

   // super();

    q    = this.query();
    q.addDataSource(tablenum(LedgerJournalTrans));
    qbds = q.dataSourceTable(tablenum(LedgerJournalTrans));
    qbds.orderMode(OrderMode::GroupBy);
    ...


Нет, не помогает, тоже самое...
Старый 02.03.2006, 15:07   #8  
SANTAN is offline
SANTAN
Участник
Аватар для SANTAN
 
20 / 12 (1) ++
Регистрация: 21.09.2005
Адрес: Kiev
a
q = this.query();
поменять на
q = new query();
Старый 02.03.2006, 15:15   #9  
SANTAN is offline
SANTAN
Участник
Аватар для SANTAN
 
20 / 12 (1) ++
Регистрация: 21.09.2005
Адрес: Kiev
а такой запрос у вас нормальные данные возвращает?
SELECT TransDate, CurrencyCode, SUM(AmountCurDebit)
FROM LedgerJournalTrans GROUP BY TransDate, CurrencyCode
Старый 02.03.2006, 15:29   #10  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Когда отчеты работают через классы, то Query отчета строится по дизайну Query в отчете (тафтология), при этом метод init не вызывается. Попробуте в классе отчета перекрыть инициализацию Query отчета.

ЗЫ. Зделайте поиск по классам, ищите метод initQuery().

Последний раз редактировалось raz; 02.03.2006 в 15:33.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почему join запрос разбивается на подзапросы!? 3oppo DAX: Программирование 59 28.06.2007 11:52
Производительность запроса в отчете SHiSHok DAX: Программирование 14 13.11.2006 19:04
Динамические контролы в отчете основанные на display-методе petr DAX: Программирование 19 18.09.2006 15:29
Не работает запрос на нескольких компаниях Bega DAX: Программирование 3 16.09.2005 10:21
dialog в отчёте gaenar DAX: Программирование 6 14.04.2005 11:15

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

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

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