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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2002, 11:29   #1  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
? Возможен ли такой Query
Можно ли в Query засунуть такой запрос:

select ledgerTrans join dimensions_1 where ledgerTrans.Dimension[1] == dimensions_1.Num join dimensions_2 where ledgerTrans.Dimension[2] == dimensions_2.Num;

Почему-то следующий код результатов не даёт :-(

ds = query.dataSourceTable(tableNum(LedgerTrans));

ds1 = ds.addDataSource(tableNum(Dimensions));
ds1.addLink(fieldId2Ext(fieldNum(LedgerTable, Dimension), 12), fieldNum(Dimensions, Num));
range = ds1.addRange(fieldNum(Dimensions, DimensionCode));
range.value('11');

ds1 = ds.addDataSource(tableNum(Dimensions));
ds1.addLink(fieldId2Ext(fieldNum(LedgerTable, Dimension), 11), fieldNum(Dimensions, Num));
range = ds1.addRange(fieldNum(Dimensions, DimensionCode));
range.value('10');
Старый 15.12.2002, 14:33   #2  
Andrew Besedin is offline
Andrew Besedin
Участник
 
121 / 15 (1) ++
Регистрация: 25.01.2002
Привет!
Можно такой запрос заделать - проблем нет. И ты все делаешь верно. Единственное, о чем ты забыл - это изменить FetchMode для дочерних источников.
Вот модернизированный Job:
PHP код:
static void Job8(Args _args)
{
Query query = new Query();
QueryBuildDataSource ds,ds1,ds2;
QueryBuildRange range;
;
ds query.addDataSource(tableNum(LedgerTrans));
ds1 ds.addDataSource(tableNum(Dimensions));
ds1.addLink(fieldId2Ext(fieldNum(LedgerTableDimension),1), fieldNum(DimensionsNum));
range ds1.addRange(fieldNum(DimensionsDimensionCode));
range.value('1');
ds2 ds.addDataSource(tableNum(Dimensions));
ds2.addLink(fieldId2Ext(fieldNum(LedgerTableDimension), 2), fieldNum(DimensionsNum));
ds2.fetchMode(0); //Вот она - фишка! Отношение 1:1
range ds2.addRange(fieldNum(DimensionsDimensionCode));
range.value('2');

Info(query.dataSourceNo(1).toString()); //Доказательство верности

__________________
С уважением,
Андрей Беседин
Старый 15.12.2002, 15:09   #3  
kalex is offline
kalex
Участник
 
132 / 20 (1) +++
Регистрация: 18.05.2002
Адрес: Москва
Спасибо, Андрей!
Всё работатет, но сразу же возникает ещё одна проблема. Хочеться соединять таблицы по OuterJoin. Говорю в том же коде ds1.joinMode(1) и получаю ошибку [Oracle][ODBC]Restricted data type attribute violation.
Тот-же эффект даёт следующий код

LedgerTrans LedgerTrans;
Dimensions Dimensions;
;
SELECT LedgerTrans OUTER JOIN Dimensions
WHERE LedgerTrans.Dimension[12] == Dimensions.Num && Dimensions.DimensionCode == 11;

Как с этим бороться?
Буду очень признателен за ответ.
Старый 07.05.2007, 13:01   #4  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
ds1.addLink(fieldId2Ext(fieldNum(LedgerTable, Dimension),1), fieldNum(Dimensions, Num));
а здесь у вас не возникает ошибка
Недопустимая комбинация поля / поля ссылки?
Старый 07.05.2007, 13:13   #5  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (37) +++++++
Регистрация: 03.04.2002
Прошу прощения за занудство, но такой хардкод:
Цитата:
Сообщение от kalex Посмотреть сообщение
(fieldId2Ext(fieldNum(LedgerTable, Dimension), 12)
череват трудноуловимыми багами в будущем. Надежнее написать что-то вроде:
(fieldId2Ext(fieldNum(LedgerTable, Dimension), SysDimension::Center + 1)
__________________
Isn't it nice when things just work?
За это сообщение автора поблагодарили: mazzy (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
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
Установка условия ИЛИ (OR) в Query Zeratul DAX: Программирование 3 22.06.2006 14:28
Проблема с составлением Query axaLearner DAX: Программирование 10 01.12.2005 15:00
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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