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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.12.2017, 10:50   #1  
SuperStar88 is offline
SuperStar88
Участник
 
82 / 10 (1) +
Регистрация: 11.08.2017
Есть временная таблица rowQuota с ДатаС, ДатаПо и Периодом. Если Период меньше, чем кол-во месяцев между датами, то создаём новую строку, где ДатаС = ДатаС+месяц(Период)

Таблица не очень большая, около 100к записей. Да, с индексом в 2 раза быстрее получилось. И решил использовать RecordInsertList
X++:
    ttsbegin;
    list = new RecordInsertList(rowQuotaTmp.TableId);
    while select rowQuota
    index hint Idx
    {
        buf2buf(rowQuota, rowQuotaTmp);

        monthDiff = intvNo(rowQuotaTmp.DateTo, rowQuotaTmp.DateFrom, IntvScale::Month);
        dayDiff = intvNo(rowQuotaTmp.DateTo, rowQuotaTmp.DateFrom, IntvScale::Day);

        while(rowQuotaTmp.UsagePeriod <= monthDiff && dayDiff > 0)
        {
            rowQuotaTmp.DateFrom = dateMthFwd(rowQuotaTmp.DateFrom, rowQuotaTmp.UsagePeriod);
            rowQuotaTmp.DatePotreb = rowQuotaTmp.DateFrom;
            //rowQuota.insert();
            list.add(rowQuotaTmp);

            monthDiff = intvNo(rowQuotaTmp.DateTo, rowQuotaTmp.DateFrom, IntvScale::Month);
            dayDiff = intvNo(rowQuotaTmp.DateTo, rowQuotaTmp.DateFrom, IntvScale::Day);
        }
    }
    list.insertDatabase();
    ttscommit;
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 415
Размер:	10.0 Кб
ID:	11793  
Старый 20.12.2017, 12:04   #2  
dmn is offline
dmn
Участник
 
9 / 18 (1) ++
Регистрация: 25.09.2014
Цитата:
Сообщение от SuperStar88 Посмотреть сообщение
Есть временная таблица rowQuota с ДатаС, ДатаПо и Периодом. Если Период меньше, чем кол-во месяцев между датами, то создаём новую строку, где ДатаС = ДатаС+месяц(Период)
А не проще анализировать записи при insert'е во временную таблицу?
Т.е. при добавлении если ДатаС + Период < ДатаПо, тогда добавляем еще 1 запись, где ДатаС = ДатаС + Период и т.д.
Старый 21.12.2017, 19:03   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от SuperStar88 Посмотреть сообщение
Есть временная таблица rowQuota
...
И решил использовать RecordInsertList
Если таблица rowQuota временная, то использовать RecordInsertList совершенно бессмысленно. Он помогает тогда, когда таблица расположена в базе данных и сокращает количество пакетов на вставку именно в базу данных (при некоторых других условиях).
За это сообщение автора поблагодарили: SuperStar88 (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxse: November 2017 Release – Dynamics AX 2012 R3 Blog bot DAX Blogs 0 08.12.2017 10:51
stephenmann: Technical History of Dynamics AX - From Axapta 3.0 to AX2012 Blog bot DAX Blogs 5 03.03.2017 10:22
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
Sample Design Patterns: Upgrade to Microsoft Dynamics AX 2009 and issues with the global address book Blog bot DAX Blogs 0 21.12.2010 11:11

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

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

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