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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.03.2007, 16:23   #1  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
? Query.pack()
Странный результат выдает операция pack/unpack в Query
X++:
static void testQueryPack(Args _args)
{
    Query                q1, q2;
    QueryBuildDataSource qbds1, qbds2;
    container            con;
    ;
    q1    = new Query();
    qbds1 = q1.addDataSource(tablenum(InventTrans));
    qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValue(StatusIssue::Sold));
    qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValue(StatusReceipt::Purchased));
    qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValue(StatusReceipt::None));
    qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValue(StatusIssue::None));
    info(qbds1.toString());
    con = q1.pack();
    q2  = new Query(con);
    qbds2 = q2.dataSourceTable(tablenum(InventTrans));
    info(qbds2.toString());
}
чем это можно объяснить?
Старый 20.03.2007, 16:35   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да, действительно, похоже на какой-то глюк.

Попробуйте может через

X++:
    con = SysQuery::packRangeAndSortorder(q1);
    SysQuery::unpackRangeAndSortorder(q2, con);
Правда это сработает для этой конкретной ситуации, но может не сработать для более общей
Старый 20.03.2007, 16:40   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Навскидку - StatusIssue::None и StatusReceipt::None не имеют меток (label). Если их создать, то Query из контейнера будет создаваться нормально
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: belugin (15), ice (1).
Старый 20.03.2007, 16:45   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от AndyD Посмотреть сообщение
Навскидку - StatusIssue::None и StatusReceipt::None не имеют меток (label). Если их создать, то Query из контейнера будет создаваться нормально
Точно.
Если вместо None указать другое значениЕ, то будет ОК
Старый 20.03.2007, 16:50   #5  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
придется давать осмысленный label, типа "Нет"
Старый 08.11.2010, 11:01   #6  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
в Ax 2009 этот баг так и не исправили

ПС причем, если в трешке можно было в Label поставить пробел для решения данной проблемы, то в Ax 2009 так сделать нельзя

Последний раз редактировалось ice; 08.11.2010 в 11:07.
Старый 08.11.2010, 11:06   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Я думаю, что его и не исправят в обозримом будущем. Так что стоит принять это как должное, и указывать метки для всех перечислений.
За это сообщение автора поблагодарили: ice (1).
Старый 08.11.2010, 11:15   #8  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Я думаю, что его и не исправят в обозримом будущем. Так что стоит принять это как должное, и указывать метки для всех перечислений.

еще бы МС так делал, совсем было бы прекрасно
Старый 24.01.2011, 13:55   #9  
Denicce is offline
Denicce
Участник
 
62 / 54 (2) ++++
Регистрация: 22.03.2005
Адрес: Москва
Можно так сделать. Хоть какое-то "удобство".

новый метод \Classes\Global\queryValueEnum
X++:
static str queryValueEnum(int _value, Name _dsName, FieldName _fieldName)
{
    return strfmt("(%1.%2 == %3)", _dsName, _fieldName, _value);
}
X++:
static void testQueryPack(Args _args)
{
    Query                q1, q2;
    QueryBuildDataSource qbds1, qbds2;
    container            con;
    ;
    q1    = new Query();
    qbds1 = q1.addDataSource(tablenum(InventTrans));

    qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValueEnum(StatusIssue::None, qbds1.name(), "StatusIssue"));
    qbds1.addRange(fieldnum(InventTrans, StatusIssue)).value(queryValueEnum(StatusIssue::Sold, qbds1.name(), "StatusIssue"));

    qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValueEnum(StatusReceipt::None,      qbds1.name(), "StatusReceipt"));
    qbds1.addRange(fieldnum(InventTrans, StatusReceipt)).value(queryValueEnum(StatusReceipt::Purchased, qbds1.name(), "StatusReceipt"));

    info(qbds1.toString());
    con = q1.pack();
    q2  = new Query(con);
    qbds2 = q2.dataSourceTable(tablenum(InventTrans));
    info(qbds2.toString());
}
Старый 24.01.2011, 14:25   #10  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,947 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Пожалуй все же проще было бы задать метки для всех значений енумов.
Где-то на форуме даже выкладывали джоб, для поиска таких значений.
Теги
query, баг, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
Dynamics AX Sustained Engineering: Microsoft Dynamics AX 2009 Service Pack 1 Released Blog bot DAX Blogs 5 21.11.2008 17:00
palleagermark: Sample union query from AX 2009 Blog bot DAX Blogs 0 11.07.2008 20:05
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 28.10.2006 16:40
Проблема с составлением Query axaLearner DAX: Программирование 10 01.12.2005 15:00
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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