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

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

Проблемы с QueryRun в Fetch'e . Дело в том , что я хочу подставить ranges дважды и в второй раз запрос не работает ... Вот исходник :

X++:
   qr = new QueryRun(q);

   qrg1 = qr.query().dataSourceTable(TableNum(ProdJournalProd)).addRange(fieldNum(ProdJournalProd,TransDate));
   qrg1.value(queryRange(startDate, endDate));

   while (qr.next())
   {
      prodJournalTable = qr.get(tablenum(prodJournalTable));
      prodJournalProd  = qr.get(tablenum(prodJournalProd));
      inventDim        = qr.get(tablenum(InventDim));
      prodTable        = qr.get(tablenum(ProdTable));

     // ... делаем свои дела ....
   }

   if ( lVkd )
   {

      qr2 = qr.newObject( q );
      qrg1 = NULL;
      qr   = NULL;

      qrg2 = qr2.query().dataSourceTable(TableNum(ProdTable)).addRange( fieldNum(ProdTable,DlvDate) );
      qrg2.value(queryRange(startDate, endDate));

      while ( qr2.next() )
      {
         inventDim        = qr2.get(tablenum(InventDim));
         prodTable        = qr2.get(tablenum(ProdTable));

     // ... делаем свои дела .... 

      }
   }
как видно , впервые собираю данные по ProdJournalProd , а потом ещё по ProdTable . В DataSources рапорта таблицы соеденные - порядок - ProdTable -> ProdJournalTable -> ProdJournalProd -> InventDim . Проблема в том , что qr2 неперебивает qr , qr2 дает только те записи , которые уже есть по первыми условиями - qr . Есть такое впечатление , что в fetch'e можно использовать только один queryRun ...

Спасибо заранее ! С уважением , Римантас

Последний раз редактировалось Rimantas; 04.01.2008 в 12:07.
Старый 04.01.2008, 13:19   #2  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от Rimantas Посмотреть сообщение
X++:
qr2 = qr.newObject( q );
1) А параметр у newObject точно Query, а не QueryRun? Я не помню.
2) "qr2 = new QueryRun(q)" не поможет?
Старый 04.01.2008, 13:23   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Rimantas Посмотреть сообщение
я хочу подставить ranges дважды и в второй раз запрос не работает... впервые собираю данные по ProdJournalProd, а потом ещё по ProdTable. В DataSources рапорта таблицы соеденные - порядок - ProdTable -> ProdJournalTable -> ProdJournalProd -> InventDim . Проблема в том , что qr2 неперебивает qr , qr2 дает только те записи , которые уже есть по первыми условиями - qr.
Во-первых, если идут последовательно две выборки с использованием QueryRun, то зачем плодить лишние переменные qr2 и qrg2? Во-вторых, какие именно запросы уходят в СУБД? Если запросы уходят правильные, возможно, у вас просто данные пересекаются так, что выборка с условиями по ProdTable является подмножеством выборки с условиями по ProdJournalProd.
Старый 04.01.2008, 14:10   #4  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Hyper Посмотреть сообщение
1) А параметр у newObject точно Query, а не QueryRun? Я не помню.
2) "qr2 = new QueryRun(q)" не поможет?
1 - Да , там точно Query .
2 - Способ new QueryRun(q) тоже непомогает ...
Старый 04.01.2008, 14:20   #5  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Во-первых, если идут последовательно две выборки с использованием QueryRun, то зачем плодить лишние переменные qr2 и qrg2?
Ну ето можно по всякому сделать ... Можно и с тем же самим qrg1 и т.д.

Цитата:
Во-вторых, какие именно запросы уходят в СУБД? Если запросы уходят правильные, возможно, у вас просто данные пересекаются так, что выборка с условиями по ProdTable является подмножеством выборки с условиями по ProdJournalProd.
Здесь вы хорошо заметили ... И похоже , что вы правы ... Как то я раньше недогодалься !

Тогда другой вопрос - здесь мне нужно собрать данные , которые появились в ProdJournalProd а потом нужно собрать данные от ProdTable в диапазоне периода , независимо от ProdJournalProd . Надеюсь , что ето можно делать в runtime присоединив табличку ProdJournalProd , а потом отключая её . Или я ошибаюсь ?
Старый 04.01.2008, 17:07   #6  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Rimantas Посмотреть сообщение
. Надеюсь , что ето можно делать в runtime присоединив табличку ProdJournalProd , а потом отключая её . Или я ошибаюсь ?
Как и выходить что-то похоже ... Есть ещё один вопрос - можно ли вытащив условия query присоединить к нужной табличке ? Вот например SysReportRun::executePrintRangeSection(element) даёт все условия - трудно ли отобрать нужные условия для конкретной таблички и присоединить как ranges ? Может быть какой нибудь примерчик есть ...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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
Как же все-таки организованиы Query и QueryRun? VIS DAX: Программирование 4 03.07.2003 15:22
Проблема: подстановка значений по дефолту в диалог QueryRun cyrus DAX: Программирование 4 21.03.2003 09:39

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

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

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