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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.05.2011, 12:28   #1  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Navision
закон Мэрфи опять сработал
почему-то если rangeStart - фильтр по одному полю
rangeStart = qbds.addRange(fieldnum(MyTBL, STARTDATE));
rangeStart.value(strfmt('%1..%2',FromDate.valueStr(),ToDate.valueStr()));
то работает и даты как положено воспринимает

SELECT * FROM MyTBL WHERE ... AND ((StartDate>={ts '2011-01-01 00:00:00.000'} AND StartDate<={ts '2011-05-22 00:00:00.000'})) AND .....

а если
str rangeDate = strfmt("(((STARTDATE>=%1) and (STARTDATE<=%2)) or ((ENDDATE>=%1) and (ENDDATE<=%2)))", FromDate.valueStr(), ToDate.valueStr());
rangeDates = qbds.addRange(fieldNum(MyTBL ,RecId));
rangeDates.value(rangeDate); - фильтр по RecID

то даты имеют вид другой
SELECT * FROM MyTBL WHERE ... AND (((((STARTDATE>=01/01/2011) and (STARTDATE<=22/05/2011)) or ((ENDDATE>=01/01/2011) and (ENDDATE<=22/05/2011)))))
ещё ругается что какой-то скобки не хватает.

[Date values should be formatted using Date2StrXpp() ]

пыталась вместо FromDate.valueStr() - date2strxpp(FromDate) ругается
Argument '_date' ia incompatible with required type.
Старый 22.05.2011, 12:46   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от timaluhs Посмотреть сообщение
[Date values should be formatted using Date2StrXpp() ]

пыталась вместо FromDate.valueStr() - date2strxpp(FromDate) ругается
Argument '_date' ia incompatible with required type.
Аргумент функции date2strxpp должен иметь тип дата. Попробуйте чтото вроде
X++:
date2strxpp(FromDate.DateValue())
Старый 22.05.2011, 13:04   #3  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
поставила
date2strxpp(FromDate.DateValue())
теперь SQL вообще какой-то кривой

(((((STARTDATE>=01\01\2011) and (STARTDATE<=22\05\2011)) or ((ENDDATE>=01\01\2011) and (ENDDATE<=22\05\2011)))))
Старый 22.05.2011, 19:49   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от timaluhs Посмотреть сообщение
теперь SQL вообще какой-то кривой
Что именно вам не нравится? Если вы про пару лишних внешних скобок, то это нормаьлно

Ещё. Вместо AND и OR используйте && и || соответственно.
Старый 23.05.2011, 08:46   #5  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
почему && и || ?это же запрос который идёт на SQL сервер. Там вроде как and и or надо.
и слэши обратные как -то не очень. SQL сервер ругается на такое
"Incorrect syntax near '\01'."
не нравится ему дата в таком виде
Старый 23.05.2011, 08:51   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от timaluhs Посмотреть сообщение
это же запрос который идёт на SQL сервер
Неа. Это запрос, который ещё будет постобработан аксаптой.

Вот такой код у меня выполняется без ошибок:
X++:
static void JobTestExpressionsInQueryRanges(Args _args)
{
    InventTrans InventTrans;
    fromDate fromDate   = 03\05\2011;
    toDate  toDate      = 04\05\2011;

    Query q;
    QueryBuildDataSource qbdsInventTrans;
    QueryRun qr;
    ;
    q = new Query();
    qbdsInventTrans = q.addDataSource(tableNum(InventTrans));
    qbdsInventTrans.addRange(fieldNum(InventTrans, RecId)).value(
        strfmt("(((%1.%2 >= %4) && (%1.%2 <= %5)) || ((%1.%3 >= %4) && (%1.%3 <= %5)))" ,
            qbdsInventTrans.name(),
            fieldStr(InventTrans, DatePhysical),
            fieldStr(InventTrans, DateFinancial),
            Date2StrXpp(fromDate),
            Date2StrXpp(toDate)
        ));

    info(qbdsInventTrans.toString());

    qr = new QueryRun(q);
    while (qr.next())
    {
        InventTrans = qr.get(tableNum(InventTrans));
        info(InventTrans.ItemId);
        break;
    }

    info(".");
}
Обратите внимание на то, что имя таблицы, а точнее имя источника данных, в данном запросе (в условии участвует поля из одной и той же таблицы) можно было не указывать, но в общем случае его указывать нужно.
Впрочем этот нюанс и многие другие описаны в статье по ссылке, которую я приводил выше

Последний раз редактировалось S.Kuskov; 23.05.2011 в 09:43.
Старый 23.05.2011, 10:51   #7  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
исходная дата приходит из календаря на форме
обратные слэши это после date2strxpp и
после info(this.query().dataSourceTable(tableNum(mlm_TemporaryLeaveReport)).toString());и если я правильно понимаю должно быть and а не &&
т.е обратные слеши идут на SQL,а там их явно не ждали
Старый 23.05.2011, 12:23   #8  
nix0root is offline
nix0root
Участник
 
67 / 16 (1) ++
Регистрация: 17.03.2009
Адрес: МО
К примеру.

X++:
            qbrEmployDate.value(   '(EmplTable.PayEmploymentDate_RU != '+date2StrXpp(datenull())+')'
                                  +'&&'
                                  +'(EmplTable.PayEmploymentDate_RU <= '+date2StrXpp(systemdateget())+')'
                               );
            qbrResignDate.value(   '(EmplTable.PayResignedDate_RU !='+date2StrXpp(datenull())+')'
                                  +'&&'
                                  +'(EmplTable.PayResignedDate_RU < '+date2StrXpp(systemdateget())+')');
__________________
В подводной охоте главное вдох ...
Теги
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, время: 13:20.