Показать сообщение отдельно
Старый 18.03.2010, 13:20   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
а какая у Вас версия аксапты?
просто у меня Ax 3.0 SP3, джобик:
X++:
Query                   query;
    QueryBuildDataSource    qbdsInventSum, qbdsInventTrans;
    ;

    query   = new Query();

    qbdsInventSum = query.addDataSource(tableNum(InventSum));
    qbdsInventSum.addSortIndex(indexnum(InventSum, DimIdIdx));
    qbdsInventSum.indexIsHint(true);
    qbdsInventSum.addRange(fieldNum(InventSum, PhysicalInvent)).value(QueryValue('!= 0'));

    qbdsInventTrans = qbdsInventSum.addDataSource(tableNum(InventTrans));
    qbdsInventTrans.addLink(fieldNum(InventTrans, InventDimId), fieldNum(InventSum, InventDimId));
    qbdsInventTrans.addLink(fieldNum(InventTrans, ItemId), fieldNum(InventSum, ItemId));
    qbdsInventTrans.addSortIndex(indexNum(InventTrans, DimIdIdx));
    qbdsInventTrans.indexIsHint(true);
    qbdsInventTrans.addRange(fieldNum(InventTrans, DatePhysical)).value(SysQuery::range(dateNull(), dateMax()));
    qbdsInventTrans.joinMode(JoinMode::NoExistsJoin);

    info(qbdsInventSum.toString());
собрал вот такой запрос:
Цитата:
SELECT INDEXISHINT * FROM InventSum USING INDEX DimIdIdx WHERE ((!PhysicalInvent= 0)) NOTEXISTS JOIN INDEXISHINT * FROM InventTrans USING INDEX DimIdIdx WHERE InventSum.InventDimId = InventTrans.inventDimId AND InventSum.ItemId = InventTrans.ItemId AND ((DatePhysical<=31.12.2153))
как видно подставилось то что нужно, NOTEXISTS
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем