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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.03.2009, 20:18   #1  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Advanced query range value expressions: поле таблицы - имя вcтроенной функции year().
При попытке создания расширенного условия выборки по полю Year таблицы OLAPTimeByDate

PHP код:
qbds.addRange(fieldNum(OLAPTimeByDay,Year)).value(
           
strFmt("( %1 == %2 ) ",  fieldStr(OLAPTimeByDay,Year),   2008  )); 
возникает ошибка:


Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 7.


Подозреваю, что причина в глобальной функции: int year(date date)

Интересует решение данной проблемы: как наложить условие на поле Year ?
Может быть есть какая-нибудь волшебная скобочка ?


P.S.
1) Переименовать поле таблицы\Добавить аналогичное с другим именем - не предлагать
2) Условие выборки сознательно упрощено.
3) Полный текст джоба
PHP код:
static void Job777(Args _args)
{
  
Query                 q = new Query();
  
QueryBuildDataSource  qbds;
  
QueryRun              qr;
  
int                   i;
  ;

  
qbds q.addDataSource(tablenum(OLAPTimeByDay));

 
  
qbds.addRange(fieldNum(OLAPTimeByDay,Year)).value(
       
strFmt("(%1 == %2 )"fieldStr(OLAPTimeByDay,Year),  2008  ));

  
qr = new QueryRun(q);
  while (
qr.next())
  {
    
i++;
  }

  
info(int2str(i));

Старый 26.03.2009, 20:37   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
А так?
X++:
  qbds.addRange(fieldNum(OLAPTimeByDay,Year)).value('2008');
или раз уж так очень хочется, то уберите скобки
X++:
  qbds.addRange(fieldNum(OLAPTimeByDay,Year)).value( 
       strFmt("%1 == %2", fieldStr(OLAPTimeByDay,Year),  2008  ));
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.

Последний раз редактировалось miklenew; 26.03.2009 в 20:50.
Старый 26.03.2009, 21:07   #3  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
PHP код:
qbds.addRange(fieldNum(OLAPTimeByDay,Year)).value
       
strFmt("%1 == %2"fieldStr(OLAPTimeByDay,Year),  2008  )); 
Нет, так не работает - в выборку попадают все года, а не 2008
Старый 26.03.2009, 21:08   #4  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
я же отметил, что условие упрощено. Понятно, что в обычных случаях можно просто добавить
PHP код:
 qbds.addRange(fieldNum(OLAPTimeByDay,Year)).value('2008'); 
Но меня интересует не простой рэндж, а навороченный....

Последний раз редактировалось ATimTim; 26.03.2009 в 21:15.
Старый 26.03.2009, 23:04   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Да фигня какая-то. Действительно похоже, что поле не берёться из за того что оно зарезервированое.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 27.03.2009, 14:26   #6  
lemchey_white is offline
lemchey_white
Участник
Axapta Retail User
 
22 / 13 (1) ++
Регистрация: 08.08.2007
Попробуйте назавние поля в [](квадратные скобки взять). Может поможет.
Старый 27.03.2009, 14:38   #7  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Господа, а возможно ли с помощью Advanced query range value добиться выполнение следующего условия: not ( A and B )

Пример на SQL:

PHP код:
select 
  
from OLAPTimeByDay
  where NOT
(week 'Неделя 01' and day 1)
  
order by  yearweekday 
Мои эксперименты не увенчались успехом.
1. not ( (Week == "Неделя 01" ) && (Day == 1) )
2. !((Week == "Неделя 01" ) && (Day == 1))
3. (not ((Week == "Неделя 01" ) && (Day == 1)) )
4. (!((Week == "Неделя 01" ) && (Day == 1)))
и т.д.
Старый 27.03.2009, 14:45   #8  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
А чем !A || !B не устраивает вместо not ( A and B )?
Старый 27.03.2009, 14:49   #9  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от ATimTim Посмотреть сообщение
Господа, а возможно ли с помощью Advanced query range value добиться выполнение следующего условия: not ( A and B )
!=
Старый 27.03.2009, 14:56   #10  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Цитата:
А чем !A || !B не устраивает вместо not ( A and B )?
Это запасной вариант

dn
Цитата:
!=
А поточнее? Или это тоже !A || !B ?

Последний раз редактировалось ATimTim; 27.03.2009 в 15:09.
Старый 27.03.2009, 15:49   #11  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от ATimTim Посмотреть сообщение
А поточнее? Или это тоже !A || !B ?
ну да, булева алгебра
((Week != "Неделя 01" ) || (Day != 1))
Старый 27.03.2009, 16:58   #12  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Этот ответ уже в "копилке"
А без преобразования возможно или нет?
Старый 27.03.2009, 18:16   #13  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от ATimTim Посмотреть сообщение
Этот ответ уже в "копилке"
А без преобразования возможно или нет?
Насколько я знаю - нет... Это же не SQL всё-таки, а так... жалкое подобие...
__________________
Zhirenkov Vitaly
Теги
query, range, year, фильтр, критерии, запрос (query)

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptafreak: Label for Query Range cannot be modified (still) Blog bot DAX Blogs 2 25.07.2007 10:09
Fred Shen: Date data type in Query Range Value Expression Blog bot DAX Blogs 0 28.10.2006 16:40
Автоматическая подстановка Range в Query Владимир Максимов DAX: Программирование 9 30.03.2004 16:48
Как вытащить информацию о Range из Query raz DAX: База знаний и проекты 1 26.03.2004 11:10
Advanced query range value expressions dn DAX: Программирование 2 07.10.2003 15:38

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

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

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