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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.05.2011, 14:59   #1  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
А как соорудить фильтр чтобы там было ИЛИ

в SQL требуемая информация выдаётся по след запросу

select * from mlm_TemporaryLeaveReport
where STARTDATE between дате1 and дате2 or ENDDATE between дате1 and дате2

т.е. чтобы одно из двух полей попало в интервал дат
Старый 19.05.2011, 15:26   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от timaluhs Посмотреть сообщение
А как соорудить фильтр чтобы там было ИЛИ

в SQL требуемая информация выдаётся по след запросу

select * from mlm_TemporaryLeaveReport
where STARTDATE between дате1 and дате2 or ENDDATE between дате1 and дате2

т.е. чтобы одно из двух полей попало в интервал дат
По возможности, таких условий следует избегать. Сделать можно, но сложно, муторно и без каких-либо гарантий. Подробности можно посмотреть, например, здесь

Расширенный запрос по дате

Проблема с подобными условиями в том, что никогда заранее не скажешь, сработает или нет. Надо добавить скобки или не надо. Надо добавить фиктивное условие или и так сработает. В общем, это из разряда "пальцем придерживать".
Старый 19.05.2011, 16:30   #3  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Посмотрела я ссылочку - спасибо. Дела совсем не весело.
А про какое фиктивное условие Вы говорите? и чем это может помочь?
В какую сторону мыслить?
Старый 19.05.2011, 17:14   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от timaluhs Посмотреть сообщение
Посмотрела я ссылочку - спасибо. Дела совсем не весело.
А про какое фиктивное условие Вы говорите? и чем это может помочь?
В какую сторону мыслить?
При формировании сложно-составных условий через символьную строку Axapta все-таки пытается распарсить указанное там значение именно как Value. Чтобы выделить возможные спец.символы диапазонов и отрицаний. Ну, Axapta ведь как-то "догадывается", что если в условии указать "1..2", то подобную строку надо преобразовать в условие SQL вроде "Field >= 1 AND Field <= 2"

Все описанные "танцы с бубном" вокруг дополнительных скобок, особых символов и разных комбинаций призваны как раз-таки обмануть этот стандартный анализатор. Заставить Axapta принять условие "как есть". Без дополнительного разбора. Иногда это удается. Иногда - нет. Вот когда не удается, но "очень хочется" начинаются всевозможные уловки.

Ну, например, перед сложным условием дописать нечто вроде

X++:
strFmt('((%1) == (%1)) &&  ((%2 > 0))', ...)

Первая часть, вроде бы, абсолютно бессмысленна. Поле всегда равно самому себе. Однако без этого, вроде бы, бессмысленного условия, корректный запрос не получается...

PS: Народ, не надо писать опровержение, что "у меня получается". Это просто пример. У Вас получилось - и замечательно! Но, "в общем случае" - без гарантий...
Теги
query, querybuildrange, range, фильтр

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как правильно хранить статичный набор начальных данных в классах? mazzy DAX: Программирование 58 14.04.2011 12:10
Статистика по каждому коду номенклатуры. Как правильно построить Query? dynamax DAX: Программирование 17 14.10.2009 11:27
ERP-BLOG: Axapta, фильтр по сетке Blog bot DAX Blogs 26 05.02.2009 15:56
Исполнить сформированный фильтр radya DAX: Программирование 14 26.07.2007 20:47
Как правильно построить Query Bukovka DAX: Программирование 0 25.03.2004 11:55

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

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

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