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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2007, 08:52   #1  
Tiruvileijadal' is offline
Tiruvileijadal'
Участник
Аватар для Tiruvileijadal'
 
92 / 10 (1) +
Регистрация: 15.03.2007
Адрес: Сургут
Peter Savintsev, спасибо за идею реализации Чуть-чуть подправила код и вроде как все работает
ВСЕМ огромное сенкс за участие!!! Толпой как-то приятнее думать
__________________
MBS-Axapta 3.0 CIS SP3

Последний раз редактировалось Tiruvileijadal'; 05.12.2007 в 09:17. Причина: орфография
Старый 06.12.2007, 09:22   #2  
Tiruvileijadal' is offline
Tiruvileijadal'
Участник
Аватар для Tiruvileijadal'
 
92 / 10 (1) +
Регистрация: 15.03.2007
Адрес: Сургут
Все, силы иссякли, нервов нет, не могу понять почему не выбирает. В таблице MyTable есть данные с аналитиками. Сделала небольшую группировку по аналитикам, чтоб хоть примерно преставлять - что должно выводится в отчет. Получилось следующее:
Depart Center Managment - аналитика
(0) (1) (3) - индекс в Enum
ogk-01 002025
sug-01 002025
sug-01 002035
sug-28 005041
sug-28 005036 600812
Код программы:
X++:
Query initQuery()
{
    Query                   q = new Query();
    QueryBuildDataSource    qbds;
    qbds = q.addDataSource(tablenum(SUG_LedgerTransDimentionsDetails));
    qbds.orderMode(OrderMode::GroupBy);
    return q;
}
 
void SelDimens(Query _q, int _idx, SysDimension _sysDim, SysDim _dimValue, int  _i)
{
    QueryRun                qr = new QueryRun(this.initQuery());
    Dimensions              dim;
    SysDImension            sysDimGroup;
    ;
    num_count = 1;
   // numDomens - контейнер с номерами выбранных аналитик (1,2,4 в примере)
    sysDimGroup = conPeek(numDimens, _idx) - 1;
    // поле для выбора (как я понимаю)
    qr.query().dataSourceTable(tablenum(SUG_LedgerTransDimentionsDetails)).addSortField(fieldId2Ext(fieldnum(SUG_LedgerTransDimentionsDetails, Dimension), _i));
    // фильтр, по которому поле выше отбирают
    qr.query().dataSourceTable(tablenum(SUG_LedgerTransDimentionsDetails)).addRange(fieldId2Ext(fieldnum(SUG_LedgerTransDimentionsDetails, Dimension), _sysDim)).value(queryValue(_dimValue));
    while (qr.next())
    {
       ltvd1 = qr.get(tablenum(SUG_LedgerTransDimentionsDetails));
       select Description from dim where dim.Num == ltvd1.Dimension[_i]
                                      && dim.DimensionCode == sysDimGroup;
       medt.insertValue2(num_count, counter, dim.Description);
       medt.insertValue2(num_count+1, counter, int2str(_i));
       counter++;
        if (h <= conLen(numDimens))
        {
            h = _idx + 1;
            i = conPeek(numDimens, h);
            this.SelDimens(qr.query(), h, sysDimGroup, ltvd1.Dimension[_i], i);
        }
    }
}
Результатом работы этого кода - выбор только первый и второй уровень (т.е. Depart и Center). И даже если я знаю, что для определенных Depart и Center есть значение в Managment - while (qr.next()) проскакивает свой цикл, как буд-то там ничего не выбралось... Проверяю в дебагере значения переменных, получается, что SortField есть myTable.Dimension[4] и Range поле myTable.Dimension::Center = '005036'. Т.е. селект должен выполниться правильно, а он не выполняется
А еще бывают ситуации, когда у Depart нет Center, но есть Managment - вот тут цикл точно проскочит выборку и ничего не выдаст, а как сделать чтоб не проскочил?
Я уже подумываю о том, чтоб для каждого счета жестко забить аналитики и только по ним делать выборку и плевать на все... Вообще невозможно предусмотреть все ситуации.
__________________
MBS-Axapta 3.0 CIS SP3
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Фильтр по пустому Dimension[x] в select Yprit DAX: Программирование 3 05.03.2008 15:11
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
select group by listener DAX: Программирование 10 18.11.2003 12:19
group , но не by slava DAX: Программирование 9 21.05.2003 19:05

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

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

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