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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.03.2008, 09:18   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
1) иными словами разобрать запрос в плане периода дат я не могу и придется все же делать период дат отдельно в виде реквизитов диалога?
Старый 01.03.2008, 12:53   #2  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от Arahnid Посмотреть сообщение
1) иными словами разобрать запрос в плане периода дат я не могу и придется все же делать период дат отдельно в виде реквизитов диалога?
А кто мешает сделать такое преобразование програмно?
Считываем значение range в строку, вытаскиваем из неё даты и формируем новое условие, которое подставляем в range вместо исходного.
Старый 01.03.2008, 13:07   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Arahnid, архиОгромнейшая просьба: создавайте отдельные ветки для новых вопросов.
Если нужно сослаться на какую-то другую ветку, то просто сделайте ссылку.
Ну, сколько можно?

Цитата:
Сообщение от Arahnid Посмотреть сообщение
Задача. Есть таблица проводок по кассе.
Дата задается дважды:
1. запрос , в котором пользователь выбирает периода типа 010108..31.01.08
2. в процессе обработке мне надо уточнить, что есть даты, которые не входят в период. ...
Не разбирайте запрос пользователя.
Просто допишите: +",!20.01.08,!15.01.08"
И все.

Кроме того, обратите внимание, что когда вы пишете обычный range то должны писать дату в формате локали клиента 20.01.08. Если же вы пишете дату в условии через скобки ((filed = 'date')) то скорее всего вам придется писать дату в виде литерала 20\01\2008

Цитата:
Сообщение от Arahnid Посмотреть сообщение
1) иными словами разобрать запрос в плане периода дат я не могу и придется все же делать период дат отдельно в виде реквизитов диалога?
Я так и не понял зачем вы собираетесь "разбирать запрос".
Прежде чем программировать, подумайте как бы эту задачу решил пользователь своими руками.
__________________
полезное на axForum, github, vk, coub.
Старый 01.03.2008, 17:13   #4  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Не разбирайте запрос пользователя.
Просто допишите: +",!20.01.08,!15.01.08"
И все.
Точно В обычном range ",!" интерпретируется как AND NOT, в то время как просто "," как OR
Цитата:
Сообщение от mazzy Посмотреть сообщение
Если же вы пишете дату в условии через скобки ((filed = 'date')) то скорее всего вам придется писать дату в виде литерала 20\01\2008
Для этого случая как раз и нужна функция date2strXpp().
Цитата:
Сообщение от mazzy Посмотреть сообщение
Я так и не понял зачем вы собираетесь "разбирать запрос".
Поскольку первоначальная тема было по "расширенной" фильтрации ("через скобки"), то я предложил решение в виде ((%date% >= date1) && (%date% <= date2) && (%date% != date3)), т.к. при таком виде записи диапазон дат через ".." не задается. Но в данном случае все решается намного проще
Старый 01.03.2008, 17:32   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от dn Посмотреть сообщение
Для этого случая как раз и нужна функция date2strXpp().
и я про это - следить придется

Цитата:
Сообщение от dn Посмотреть сообщение
Поскольку первоначальная тема было по "расширенной" фильтрации ("через скобки"), то я предложил решение в виде ((%date% >= date1) && (%date% <= date2) && (%date% != date3)), т.к. при таком виде записи диапазон дат через ".." не задается. Но в данном случае все решается намного проще
А первоначальная это какая?
Вопрос Arahnid был выделен отсюда Очередной вопрос про Query
__________________
полезное на axForum, github, vk, coub.
Старый 01.03.2008, 17:42   #6  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
А первоначальная это какая?
Вопрос Arahnid был выделен отсюда Очередной вопрос про Query
Как раз эта ветка и была вроде посвящена "расширенной" фильтрации. Разве нет?
Старый 01.03.2008, 18:41   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от dn Посмотреть сообщение
Как раз эта ветка и была вроде посвящена "расширенной" фильтрации. Разве нет?
По-моему, нет. Человек спрашивал как сделать query. Там расширенная фильтрация вовсе ни к чему.

Но теперь мы уже здесь уходим в оффтопик.
__________________
полезное на axForum, github, vk, coub.
Теги
фильтр, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
MDX запрос, выборка за период. Вата DAX: Программирование 2 17.10.2008 14:34
Lookup даты для выбора месяца Antidot DAX: Программирование 0 21.01.2005 21:24
Сортировка в запросе "В Наличии" linney DAX: Программирование 16 20.01.2005 20:01
Очень не хочеться вручную устанавливать даты для всех строк журнала .... ATimTim DAX: Функционал 1 14.09.2004 19:33
Проверка даты Wamr DAX: Программирование 9 15.12.2002 17:28

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

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

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