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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.10.2004, 15:54   #1  
simply2double is offline
simply2double
Участник
Аватар для simply2double
 
556 / 19 (2) ++
Регистрация: 08.09.2004
Адрес: alfa cen
? ох уж этот QueryRun
Помогите разобраться... может свежим взглядом все покажеться простым ...

PHP код:
QueryRun  query;

    ;

//  Выбираю проводки журнала проводок 
//  Создаю QueryRun на базе готового представления
    
query = new QueryRun(querystr(InventJournalTrans));
//  подвязываю таблицу InventTrans
    
query.query().dataSourceTable(tableNum(InventJournalTrans)).addDataSource(tableNum(InventTrans)).joinMode(JOINMODE::InnerJoin);
    
query.query().dataSourceTable(tableNum(InventTrans)).addLink(fieldNum(InventJournalTransInventTransId), fieldNum(InventTransInventTransId));
//  Ставлю фильтр по коду журнала MyJournalId
    
query.query().dataSourceTable(tableNum(InventJournalTrans)).rangeField(fieldNum(InventJournalTransJournalId)).value(queryValue(MyJournalId));
//  Возможно это лишнее
    
query.query().dataSourceTable(tableNum(InventTrans)).rangeField(fieldNum(InventTransStatusIssue)).value(queryValue(enum2str(statusIssue::None)));
    
query.query().dataSourceTable(tableNum(InventTrans)).addRange(fieldNum(InventTransStatusReceipt)).value(queryValue(enum2str(statusReceipt::Purchased)));
//  Прилинковываю третью таблицу, с помощью полей TranstableId и TransRecId
    
query.query().dataSourceTable(tableNum(InventJournalTrans)).addDataSource(tableNum(MyTable)).joinMode(JOINMODE::InnerJoin);
    
query.query().dataSourceTable(tableNum(MyTable)).addLink(fieldNum(InventJournalTransTableId), fieldNum(MyTable TransTableId));
    
query.query().dataSourceTable(tableNum(MyTable )).addLink(fieldNum(InventJournalTransRecId), fieldNum(MyTableTransRecId));
//  Ставлю фильтр по двум полям этой таблицы
     
query.query().dataSourceTable(tableNum(MyTable)).addRange(fieldNum(MyTable,MyTransRecId)).value(queryValue(MyValue1));
     
query.query().dataSourceTable(tableNum(MyTable)).addRange(fieldNum(MyTableSelected)).value(queryValue(NoYes::Yes))

    return 
query
В результате хотелось иметь записи InventJournalTrans отфильтрованные по номеру журнала и двум полям третьей таблицы. В сикуэл это выглядит довольно просто:

PHP код:
SELECT     INVENTJOURNALTRANS.JOURNALIDINVENTJOURNALTRANS.RECIDMYTABLE.SELECTEDINVENTTRANS.QTYINVENTTRANS.ITEMID
FROM         INVENTTRANS 
INNER JOIN   INVENTJOURNALTRANS ON INVENTTRANS
.DATAAREAID INVENTJOURNALTRANS.DATAAREAID AND 
                                   
INVENTTRANS.INVENTTRANSID INVENTJOURNALTRANS.INVENTTRANSID 
INNER JOIN   MYTABLE  ON INVENTTRANS
.DATAAREAID MYTABLE .DATAAREAID AND 
                                         
INVENTJOURNALTRANS.RECID MYTABLE .TRANSRECID
WHERE     
(INVENTJOURNALTRANS.JOURNALID 'IV03000034') AND 
          (
INVENTTRANS.STATUSISSUE 0) AND 
          (
INVENTTRANS.STATUSRECEIPT 1) AND 
          (
MYTABLE .SELECTED 1) AND
          (
MYTABLE .MYTRANSRECID MyValue1
но у меня вываливаются все сочетания... где я неправ ???
Старый 05.10.2004, 17:05   #2  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,253 / 980 (37) +++++++
Регистрация: 03.04.2002
В Axapta Application Development Best Practices говорится:

"Create queries in the tree where possible, instead of building it all in code.
In other situations - use a select statement. Select statements are often easier to read, and they are much more compile time stable. "

Ваш код, нагалядный пример того, что QueryRun плохо воспринимается не привычным взглядом. Обратите внимание, в каком порядке у вас связываются DataSource и сравните с запросом. Попробуйте реализовать этот-же запрос в Query дизайнере, многое прояснится.
__________________
Isn't it nice when things just work?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
Простой QueryRun не работает miklenew DAX: Программирование 13 20.01.2009 14:17
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
queryRun в рамках RunBaseBatch Smith DAX: Программирование 6 26.04.2005 11:03
Проблема: подстановка значений по дефолту в диалог QueryRun cyrus DAX: Программирование 4 21.03.2003 09:39

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

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

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