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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.02.2013, 07:40   #21  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Есть время разбрасывать камни и время их собирать. Кто-то поленился нормально написать код, избавиться от дублирования, вынести принятие однотипных решений в одно место, а теперь придется либо наплодить кучу copy-paste'а, либо засучить рукава и провести серьезный рефакторинг кода.
Не стоит так делать. Тут уже писали, наиболее нормальный вариант, позволяющий менять тип join'а во время выполнения, - это переписать код на Query'ках. Решать проблему copy-paste'ом - все равно, что заметать сор под половик в надежде, что убирать его придется кому-то другому; это непрофессионально, в конце концов
Так и я о том же. Думаю, просто как могли, так и написали. Кент Бек, Роберт Мартин, Стив Макконнелл, Мартин Фаулер просто отдыхают.
Предлагаю автора поделиться кодом.
__________________
// no comments
Старый 14.02.2013, 12:49   #22  
Xardas is offline
Xardas
Участник
 
28 / 13 (1) ++
Регистрация: 19.09.2012
Зря вы иронизируете. Может, вы не поняли, но запросы в коде разные. Специально для вас подчеркиваю это слово.
Нужен пример? Да запросто.
Первый запрос:
X++:
while select tbl1
      group by EmplId, Organization
      where tbl1.PostDate >= startPeriod &&
            tbl1.PostDate <= endPeriod &&
            tbl1.Organization like organization + "*"
        exists join tbl2
        where tbl2.Key  == tbl1.Key &&
              tbl2.Sham == NoYes::No
Второй запрос:
X++:
select sum(Amount)
from tbl1
group by EmplId
where tbl1.PostDate     <  startPeriod &&
      tbl1.EmplId       == temp.EmplId &&
      tbl1.Organization == temp.Organization
  exists join tbl2
  where tbl2.Key  == tbl1.Key &&
        tbl2.Sham == NoYes::No;
И таких запросов несколько.
Ну и как тут обойтись одной кверей? Для каждого запроса менять ее?
Старый 14.02.2013, 13:08   #23  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Xardas Посмотреть сообщение
Ну и как тут обойтись одной кверей? Для каждого запроса менять ее?
X++:
Query query = new Query();
QueryBuildDataSource qbds, qbdsJoin;

boolean groupByEmplId, groupByOrg;
boolean sumAmountField;
boolean selectForEmplId;
boolean needJoin;
;

qbds = query.addDataSource(tableNum(tbl1));
qbds.OrderMode(OrderMode::GroupBy);

if (needJoin)
{
   qbdsJoin =  qbds.addDataSource(tableNum(tbl2));
   qbdsJoin.relations(true);
}

if (groupByEmplId)
      qbds.addSortField(fieldNum(tbl1, EmplId));

if (groupByOrg)
      qbds.addSortField(fieldNum(tbl1, Organization));

if (selectForEmplId)
   qbds.addRange(fieldNum(tbl1, EmplId)).value(queryValue(temp.EmplId));

if (sumAmountField)
   qbds.addSelectionField(fieldNum(tbl1, Amoun), SelectionField::Sum);

// и т.д. и т.п ....
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 14.02.2013, 13:12   #24  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Xardas Посмотреть сообщение
Ну и как тут обойтись одной кверей? Для каждого запроса менять ее?
А кто говорил про одну? На каждый запрос свой Query. Преимущество Query над оператором select в том что структуру Query можно собирать из отдельных кусков. Если в Query есть повторяющиеся части такие как например присоединение фильтрующей таблицы с нужным типом джойна, то присоединение этой части к Query можно оформить в виде отдельной процедуры. Query помогает избавиться от дублирования кода.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX 2012 Наследование таблиц. Краткое описание механизма sukhanchik DAX: Программирование 32 21.09.2018 17:56
Таблица, расширенный тип данных, базовый перечислимый тип или класс, вызванные test_Sdelka, уже существуют. Импортирование Table прервано. Poleax DAX: Программирование 4 17.05.2011 17:57
Тип производственного заказа Anais DAX: Функционал 17 26.05.2005 13:50
Никак не могу вьехать, для чего нужны тип счета и тип разноски maloy DAX: Функционал 5 28.03.2004 17:18
Тип связи Андре DAX: Программирование 9 25.04.2002 20:20
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:12.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.