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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.09.2010, 14:08   #19  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Извините конечно, но я так и непонял, что такого делает этот прямой запрос, что нельзя сделать средствами аксапты?
Вы же вот это хотели получить? Или я что-то не понимаю?
Код:
((T.Date > fromDate) || ((T.Date == fromDate) && (T.Time >= fromTime))) &&
((T.Date < toDate) || ((T.Date == toDate) && (T.Time <= toTime)))
Итак, сегодня в очередной раз напоролся на сравнение периода не только с датами, но и с временем. Код приведенный выше определяет вхождение конкретной даты с конкретным временем в период (например 01.10.2010 10 : 00 входит в период с 01.10.2010 09 : 00 по 01.10.2010 18 : 00).

Мне же нужно определять вхождение периода1 в период2.
Вот конкретный пример:
Период1 = с 01.10.2010 00 : 00 по 01.10.2010 00 : 00 (понятно, что имеются ввиду одни сутки. Конечно можно сказать, что пользователь должен конечное время в периоде1 указать как 23 : 59, но пользователей много, за каждым не уследишь. Да и интуитивно, как мне кажется, человек считает сутками с 00 : 00 до 00 : 00, поэтому скорее всего рано или поздно так и поставит.)

Период2 = с 01.10.2010 09 : 00 по 01.10.2010 18 : 00

Нужно определить входит ли период2 в период1 (визуально понятно, что входит )

После раздумий получился следующий код:
X++:
select 2
            where((2.FromDate   <  1.ToDate    ||
                      (2.FromDate   == 1.ToDate    &&
                      (2.FromTime   <= 1.ToTime    ||
                       1.ToTime        == 0)))                     ||
                       1.ToDate        == dateNull())              &&
                    ((2.ToDate     >  1.FromDate  ||
                     (2.ToDate     == 1.FromDate  &&
                     (2.ToTime     >= 1.FromTime  ||
                      2.ToTime     == 0)))                     ||
                      2.ToDate     == dateNull())
Если кто заметит логическую ошибку, если не трудно напишите
ну а если все ок, то и хорошо, может кому пригодиться, и не придется тратить лишний час на проверку правильности логики запроса
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Теги
ax2009, ax4.0, utcdatetime, время, дата

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 22.11.2006 15:20
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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