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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.05.2011, 08:46   #1  
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   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (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   #3  
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, 11:26   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от timaluhs Посмотреть сообщение
если я правильно понимаю должно быть and а не &&
т.е обратные слеши идут на SQL
Нет. Ещё раз повторю, на самом деле текст запроса, который вы видите после info(this.query().dataSourceTable(tableNum(mlm_TemporaryLeaveReport)).toString()) ещё НЕ является окончательным вариантом SQL запроса. Аксапта его ещё будет обрабатывать. Сама заменит && и || на AND и OR и сконвертирует формат даты.
За это сообщение автора поблагодарили: timaluhs (1).
Старый 23.05.2011, 11:52   #5  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Спасибо за помощь. Заработало.
Я можно ещё вопросик? А как посчитать HeadCounter (сколько строк высветилось после запроса)?
Старый 23.05.2011, 11:59   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от timaluhs Посмотреть сообщение
Спасибо за помощь. Заработало.
Я можно ещё вопросик? А как посчитать HeadCounter (сколько строк высветилось после запроса)?
Вам это нужно знать уже после того как запрос выполниться или до этого? Если после, то не вижу ничего проще чем завести переменную-счётчик и наращивать его значение по мере их вывода. Если же информация о количестве строк вам нужно до основного запроса, то тогда придётся предварительно выполнить вспомогательный запрос. Поможет вам в этом метод SysQuery::countTotal
Вот тут почитайте Количество строк в Query
Старый 23.05.2011, 12:16   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Вам это нужно знать уже после того как запрос выполниться или до этого? Если после, то не вижу ничего проще чем завести переменную-счётчик и наращивать его значение по мере их вывода. Если же информация о количестве строк вам нужно до основного запроса, то тогда придётся предварительно выполнить вспомогательный запрос. Поможет вам в этом метод SysQuery::countTotal
Вот тут почитайте Количество строк в Query
если я правильно помню, то метод countTotal не очень корректно возвращает число строк если в запросе больше одного датасорса.
Я обычно пользуюсь методом SysQuery::countLoop();
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.05.2011, 12:51   #8  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если после, то не вижу ничего проще чем завести переменную-счётчик и наращивать его значение по мере их вывода.
меня к сожалению кинули в axapta без всякого предварительного ознакомления, так потихонечку на ощупь с помощью форума и продвигаюсь.
пока не очень понятно какое query будет в SysQuery::countTotal(query )
DataSource один, куча фильтров. Почитать надо после того как показан результат. Т.е. в надо дописать в executeQuery
попробую разобраться с сылкой. Спасибо
Теги
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, время: 04:50.