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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2006, 19:18   #11  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Нашел таки, вот 2 функции из одного класса:
X++:
static str MydateDiff(transDate _d1, transDate _d2, boolean _include = False)
{
  str _s;
  int M_year, m_mth, m_days;
  ;
  M_year = Global::yearDiff(_d2,_d1);
  M_mth = mthofYr(_d2) - mthofYr(_d1);
  if (M_mth < 0)
  {
    M_mth+=12;
  }

  M_days = DayOfmth(_d2) - DayOfmth(_d1);
  if (M_days < 0)
  {
    M_mth--;
    M_days += DayOfmth(dateEndMth(_d1));
  }

  if (_include) M_days++;

  _s = strfmt("%1 %2 %3", PeriodInterval::PeriodSklInt(IntvScale::Year, M_year),
                          PeriodInterval::PeriodSklInt(IntvScale::Month, M_mth),
                          PeriodInterval::PeriodSklInt(IntvScale::Day, M_days) );

  Return _s;
}
X++:
static Str PeriodSklInt(IntvScale: _Period, int _Count)
{  // возвращает строку "кол-во периодов"
 str _s;
 ;
 if (_Count)
 {
   if (_Count == 1)
   {
     switch (_Period)
       {
       case IntvScale::Day : _s = "день"; break;
       case IntvScale::Week : _s = "неделя"; break;
       case IntvScale::Month : _s = "месяц"; break;
       case IntvScale::Quarter : _s = "квартал"; break;
       case IntvScale:Year : _s = "год"; break;
       default : _s = "период"; break;
       }
   }
   else if ((_Count <= 4))
   {
     switch (_Period)
       {
       case IntvScale::Day : _s = "дня"; break;
       case IntvScale::Week : _s = "недели"; break;
       case IntvScale::Month : _s = "месяца"; break;
       case IntvScale::Quarter : _s = "квартала"; break;
       case IntvScale::Year : _s = "года"; break;
       default : _s = "периода"; break;
       }
   }
   else
   {
     switch (_Period)
       {
       case IntvScale::Day : _s = "дней"; break;
       case IntvScale::Week : _s = "недель"; break;
       case IntvScale::Month : _s = "месяцев"; break;
       case IntvScale::Quarter : _s = "кварталов"; break;
       case IntvScale::Year : _s = "лет"; break;
       default : _s = "периодов"; break;
       }
   }
   Return strfmt("%1 %2",_Count, _s);
 }
 else Return "";
}
}
C уважением, itfs.
За это сообщение автора поблагодарили: gl00mie (1).
Теги
дата

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сделать AND между двумя датасорсами на одном уровне в query rkorchagin DAX: Программирование 15 15.01.2009 17:42
Разница между запросами Rect DAX: Программирование 13 05.12.2006 12:44
Расчеты между компаниями Yuri Nikitenko DAX: Функционал 9 15.11.2004 08:49
дизайн отчета (как сделать его с разделителями между столбцами?) puz DAX: Программирование 7 02.09.2003 08:50
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:09.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.