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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.03.2010, 13:04   #1  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Помогите с query ...
Здраствыйте ,

Никак немогу добиться резултата в одном query . В ручную ето выглядит так и работает хорошо :

Код:
      
      while select inventSum index hint LocateItemIdx where
      inventSum.InventLocationId == cInvLoc &&
      inventSum.PhysicalInvent
      notexists join firstonly invTrn index hint ItemIdx where
      invTrn.ItemId       == inventSum.ItemId      &&
      invTrn.inventDimId  == inventSum.InventDimId &&
      invTrn.DatePhysical >= dBgn
Хочу всё сделать рамотно и формирую вот так :
Код:
Query qInvSum2( Query qry )
{
   QueryBuildDataSource    qBSSum;
   QueryBuildDataSource    qBSTrn;
   ;
   qBSSum = qry.dataSourceTable( TableNum( InventSum ) );
   qBSSum.addSortIndex( indexnum( InventSum, LocateItemIdx ) );
   qBSSum.indexIsHint( true );
   qBSSum.addRange( fieldNum( InventSum, PhysicalInvent ) ).value( queryvalue( '!= 0' ) );

   qBSTrn = qBSSum.addDataSource( tableNum( InventTrans ) );
   qBSTrn.addLink( fieldNum( InventTrans, InventDimId ), fieldNum( InventSum, InventDimId ) );
   qBSTrn.addLink( fieldNum( InventTrans, ItemId ), fieldNum( InventSum, ItemId ) );
   qBSTrn.addSortIndex( indexNum( InventTrans, DimIdIdx ) );
   qBSTrn.indexIsHint( true );
   qBSTrn.addRange( fieldNum( InventTrans, DatePhysical ) ).value( SysQuery::range( dBgn, dateMax() ) );
   qBSTrn.joinMode( JoinMode::NoExistsJoin ); //  qBSTrn.firstOnly( true );
   //qBSTrn.fetchMode( QueryFetchMode::One2One );
   return qry;
}
Оно возвращает такой селект :

SELECT INDEXISHINT * FROM InventSum USING INDEX LocateItemIdx WHERE ((InventLocationId = LS)) AND ((ItemId = 1014c)) AND ((!PhysicalInvent= 0)) JOIN FIRSTONLY * FROM InventTable WHERE InventSum.ItemId = InventTable.ItemId AND ((ALNInventGroup1 = 200)) JOIN FIRSTONLY * FROM InventDim WHERE InventSum.InventDimId = InventDim.inventDimId EXISTS JOIN FIRSTONLY INDEXISHINT * FROM InventTrans USING INDEX DimIdIdx WHERE InventSum.InventDimId = InventTrans.inventDimId AND InventSum.ItemId = InventTrans.ItemId AND ((DatePhysical>=2010.02.01 AND DatePhysical<=2153.12.31))

Подчеркивал плохож место красным . Что я здесь плохо делаю ?

Спасибо заранее за помощь ! С уважением , Римантас
Теги
query

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
jinx: Dynamics AX &ndash; Query-Ranges und Filtereinstellungen des Benutzers Blog bot DAX auf Deutsch 0 04.02.2010 00:05
Помогите с Query Vitali_i DAX: Программирование 22 21.11.2009 17:59
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 28.10.2006 16:40
Помогите новичку в создании Query lev DAX: Программирование 2 19.06.2006 10:29
Помогите с query 6apcyk DAX: Программирование 23 09.09.2005 13:50

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

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

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