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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.07.2008, 16:30   #1  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
:( Ошибка при выполнении queryRun.next()
Подскажите куда копать чтоб понять в чем ошибка.

Ошибка:
Невозможно выбрать запись в Складские операции (InventTrans). Ссылка: Заказ на продажу, .
База данных SQL обнаружила ошибку.



Сам запрос создан, но вылетает на queryRun.next();



Код queryRun.query().dataSourceNo(1).toString(); выдает результат собранного запроса в следующем виде:

NAME:
s
VALUE:
SELECT * FROM InventTrans GROUP BY InventTrans.ItemId ASC WHERE ((DatePhysical>={ts '2008-04-28 00:00:00.000'} AND DatePhysical<={ts '2008-07-23 00:00:00.000'})) AND ((((StatusIssue == 1) || (StatusIssue == 2) || (StatusReceipt == 1) || (StatusReceipt == 2)))) JOIN * FROM InventDim ORDER BY InventDim.InventLocationId ASC, InventDim.inventDimId ASC WHERE InventTrans.inventDimId = InventDim.inventDimId JOIN * FROM InventLocation WHERE InventDim.InventLocationId = InventLocation.InventLocationId
TYPE:
str


Не пойму что произошло, буквально вчера работало.
Старый 23.07.2008, 17:12   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
у вас по первому датасорсу стоитгруппировка, а по втрому сортировка, по третьему вообще ничего нет.

В общем группировку нужно делать по всем 3-м датасорсам, либо из 2-го и 3-го ничего не выбирать. (Выбирать только фиктивное поле TableId)
За это сообщение автора поблагодарили: Poleax (1).
Старый 23.07.2008, 17:13   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Хотя нет.
У вас стоит Select *
т.е. по идее не предполагалось группировки.

Если так то на первом датасорсе нужно убрать GROUP BY
Старый 23.07.2008, 17:28   #4  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Цитата:
Сам запрос создан
а сам запрос можно увидеть?
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 23.07.2008, 17:44   #5  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Logger ошибку понял.. спасибо. Щас добавлю поля группировки все встанет на свои места.

Просто я вспомнил очистил SySLastValue. А метод unpack от туда брал query.

Russland сам Query создан в AOT
подцепляю и немного дополняю его фильтрами.
X++:
void new()
{
     ;
    super();
  queryRun = new QueryRun(queryStr(InventTransMX20));
}

void initQuery()
{ str s;
    ;

    queryRun.
        query().
            dataSourceNo(1).
                addRange(fieldNum(InventTrans, DatePhysical)).
                    value(SysQuery::range(fromDate, toDate));

//Статус расхода (Продано=1, Отпущено=2)         Статус прихода (Куплено=1, Получено=2)
s ="((StatusIssue == 1) || (StatusIssue == 2) || (StatusReceipt == 1) || (StatusReceipt == 2))";
//, StatusIssue::Sold, StatusIssue::Deducted, StatusReceipt::Purchased, StatusReceipt::Received);

queryRun.query().dataSourceNo(1).addRange( fieldNum(InventTrans,recId)).value(s);
}
Старый 23.07.2008, 18:10   #6  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Почти оффтоп: Заметил у вас строку
X++:
value(SysQuery::range(fromDate, toDate));
Перед добавлением такого критерия необходимо проверить, заполнены ли либо fromDate, либо toDate. Если ни то ни другое не заполнено (скажем пользователь не хочет ограничения по дате), то SysQuery::range(...) отработает некорректно, установив критерий DatePhysical == 1900.01.01, и ни одной записи не увидит. Вот демонстрация:
X++:
static void Job11(Args _args)
{
    Query                   query = new Query();
    QueryBuildDataSource    qbds;
    QueryBuildRange         qbr;
    TransDate               fromDate, toDate;
    ;
    
    // fromDate = today();
    
    qbds = query.addDataSource(tablenum(SalesTable));
    qbr  = qbds.addRange(fieldnum(SalesTable, CreatedDate));
    
    // if (fromDate || toDate)
        qbr.value(SysQuery::range(fromDate, toDate));
    
    info(qbds.toString());
}
Старый 23.07.2008, 18:49   #7  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
DSPIC
у класса есть метод, там и проверяется.
X++:
public boolean validate(Object calledFrom)
{
    boolean ret = super(calledFrom);

    if (!fromDate || !toDate)
        return checkFailed('Не задан интервал дат');

    if (fromDate > toDate)
        return checkFailed('Некорректный интервал дат');

    return ret;
}
Спасибо всем. Вопрос закрыт.

Последний раз редактировалось Poleax; 23.07.2008 в 19:04.
Теги
queryrun

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка while next niktata DAX: Программирование 11 20.02.2009 15:18
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
axStart: Please keep the AOT reports in Dynamics AX next release alive Blog bot DAX Blogs 2 13.12.2008 12:18
while (queryRun.next()) Tiruvileijadal' DAX: Программирование 6 06.12.2007 07:38
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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