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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.04.2015, 15:31   #21  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
ну не может быть, чтобы у такой простой задачи не было простого решения...
== (case B.PoleTTT isnull '' default B.PoleTTT ) ?..
Старый 27.04.2015, 07:46   #22  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,245 / 980 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от trudel Посмотреть сообщение
ну не может быть, чтобы у такой простой задачи не было простого решения...
== (case B.PoleTTT isnull '' default B.PoleTTT ) ?..
Это не задача, а идиома из другого языка, которую вы пытаетесь перевести слово в слово. Поэтому еще раз повторюсь. X++ запросы лишь внешне напоминают SQL, но это не SQL.
Как вам правильно подсказывают, разбейте на несколько запросов. Это не SQL, в котором нужно одним монструозным запросом все перелопатить.
И я бы так базу не проектировал, конечно.
__________________
Isn't it nice when things just work?
Старый 27.04.2015, 09:20   #23  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от trudel Посмотреть сообщение
ну не может быть, чтобы у такой простой задачи не было простого решения...
== (case B.PoleTTT isnull '' default B.PoleTTT ) ?..
Если очень хочется SQL запрос, то есть возможность это сделать прямым запросом в БД.
Старый 27.04.2015, 10:18   #24  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от maldini Посмотреть сообщение
Если очень хочется SQL запрос, то есть возможность это сделать прямым запросом в БД.
Из-за таких чудесных советов и такого прелестного подхода мы и имеем в итоге кучу кода на который нельзя смотреть без слез не говоря уже о его поддрежке.

Правильно, не надо тратить время на изучение никому ненужного языка есть же c# пишите на нем и подключайте библиотеки!
Старый 27.04.2015, 10:25   #25  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от trudel Посмотреть сообщение
ну не может быть, чтобы у такой простой задачи не было простого решения...
== (case B.PoleTTT isnull '' default B.PoleTTT ) ?..
Как уже сдесь говорили в Ах поля не могут быть null следовательно этой задачи в этом языке быть не может. Если вы хотите чтобы вам помогли опишите ЧТО вы хотите достичь. а не КАК вы этого хотите достичь и вам обязательно помогут. Ну или постараются.
Старый 27.04.2015, 10:39   #26  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от skuull Посмотреть сообщение
опишите ЧТО вы хотите достичь.
Цитата:
Сообщение от trudel Посмотреть сообщение
таблица A с прицепами для автомобилей. К ней привязана таблица B с автомобилями, именно в таблице B указан параметр определяющий стоимость из таблицы С для прицепа из А. В таблице С ищем стоимость- мы нашли наш прицеп в ней, но необходимо еще учесть параметр из B. Если автомобиль к прицепу не привязали, то берем по нашему прицепу по умолчанию параметр "оранжевый" и стоимость для него.
Если очень надо, то в AX2009 результат двух запросов можно объединить в UNION.
Старый 27.04.2015, 10:49   #27  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,245 / 980 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от maldini Посмотреть сообщение
Если очень хочется SQL запрос, то есть возможность это сделать прямым запросом в БД.
А права доступа вы как будете к такому решению привинчивать? Особенно record level? Как вы будете отслеживать изменения в схеме данных? Ждать пока в runtime сбойнет?
__________________
Isn't it nice when things just work?
Старый 27.04.2015, 11:10   #28  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от macklakov Посмотреть сообщение
А права доступа вы как будете к такому решению привинчивать? Особенно record level? Как вы будете отслеживать изменения в схеме данных? Ждать пока в runtime сбойнет?
У человека было большое желание написать запрос используя синтаксис SQL. Я подсказал как это можно сделать. Правильно это или нет это уже другой вопрос.
Старый 27.04.2015, 11:15   #29  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от maldini Посмотреть сообщение
Я подсказал как это можно сделать. Правильно это или нет это уже другой вопрос.
Бгггг.
Не надо так делать. Пожалуйста.
Старый 27.04.2015, 11:22   #30  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Бгггг.
Не надо так делать. Пожалуйста.
Я просто не обратил внимания на тему. Сорри.
С тем что так делать не надо я полностью согласен. Но ведь о том что DAX и так умеет надо упомянуть.

Последний раз редактировалось maldini; 27.04.2015 в 11:31.
Старый 27.04.2015, 20:37   #31  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
Цитата:
Сообщение от skuull Посмотреть сообщение
Правильно, не надо тратить время на изучение никому ненужного языка есть же c# пишите на нем и подключайте библиотеки!
помогите изучить. Книги на русском дают элементарные сведения, в справке на английском порой и не знаешь что искать. короче гуглю по вашему форуму и так учусь. что не нагуглю - спрашиваю.
Есть enum поля. делаю outer join с таблицей, содержащей их, для отчета. В итоге отчет выводит там где соединения не произошло все равно первое(0) значение енума, а должен пустое. Каким образом это сделать. При заполнении поля проверять поле "неенум типа" этой таблицы и если оно пустое, то тогда и енум поля заполнять пустым?
Старый 27.04.2015, 21:55   #32  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от trudel Посмотреть сообщение
помогите изучить. Книги на русском дают элементарные сведения, в справке на английском порой и не знаешь что искать. короче гуглю по вашему форуму и так учусь. что не нагуглю - спрашиваю.
Есть enum поля. делаю outer join с таблицей, содержащей их, для отчета. В итоге отчет выводит там где соединения не произошло все равно первое(0) значение енума, а должен пустое. Каким образом это сделать. При заполнении поля проверять поле "неенум типа" этой таблицы и если оно пустое, то тогда и енум поля заполнять пустым?
Если это 2009 сделайте дисплей метод на отчете
X++:
If (table)
{
    return table.field;
}
else
{
    return "";
}
За это сообщение автора поблагодарили: trudel (1).
Старый 28.04.2015, 01:03   #33  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,245 / 980 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от trudel Посмотреть сообщение
помогите изучить.
В AX запросы обычно разбивают на несколько. Т.е. описанный пример, если я его правильно понимаю, можно реализовать примерно так:

select a where a.trailerId = ...;

select b where b.Id == a.carId;

if(b)
{
select c where...
}
else
{
color = "оранжевый";
}

т.е. работаешь скорее не как с запросом, а как с функциями, заполняющими объект данными.
__________________
Isn't it nice when things just work?

Последний раз редактировалось macklakov; 28.04.2015 в 02:25.
За это сообщение автора поблагодарили: trudel (1).
Старый 28.04.2015, 11:24   #34  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от trudel Посмотреть сообщение
Есть enum поля. делаю outer join с таблицей, содержащей их, для отчета. В итоге отчет выводит там где соединения не произошло все равно первое(0) значение енума, а должен пустое. Каким образом это сделать. При заполнении поля проверять поле "неенум типа" этой таблицы и если оно пустое, то тогда и енум поля заполнять пустым?
Да. Именно так.

Axapta не в состоянии отличить состояние "нет значения", от "нулевого" значения поля. Значение NULL просто не поддерживается.

Более того, для Enum вообще не существует понятия "пустого" (нулевого) значения, поскольку, как правило, нумерация в Enum как раз и начинается с нуля. Т.е. применительно к Enum отличить "пустое" от "не пустого" значения невозможно "в принципе" Только по значению других полей. Ну, за исключением случаев, когда нумерация Enum сделана "не стандартно" (разные есть варианты)

В общем случае, по возможности, любые типы соединений, отличные от inner join лучше вообще избегать. Сопровождать такие запросы, если возникает желание как-то расширить функциональность, слишком сложно и накладно. По возможности, используйте различные альтернативы. От заполнения временных таблиц для отчета, до различных дисплейных методов.

В Вашем случае, вероятно, подойдет вариант решения, использованный в формах SalesTable и PurchTable для отображения значений на закладках "Разноска", где отображаются номера и даты последних разнесенных документов разных типов.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 28.04.2015 в 11:30.
Старый 28.04.2015, 15:11   #35  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
После работы чисто со sql сложно перестроиться.. как раз таки хочется слепить большой запрос с различными джоинами ...
Еще вопрос, есть ли аксе12 пример выбора сразу нескольких значений из списка для фильтра. Мне надо выбрать несколько значений из enumа и передать отчету. создал расширенный тип на него, но поле lookup дает выбрать только одно значение.
Старый 28.04.2015, 15:40   #36  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от trudel Посмотреть сообщение
В итоге отчет выводит там где соединения не произошло все равно первое(0) значение енума, а должен пустое.
В Аксапте неинициализированное поле с типом Enum всегда имеет значение 0 - оно равно элементу перечислимого типа со значением 0. И в отчет выводится метка для нулевого элемента Enum. Поэтому, если у вас нулевой элемент имеет какой-то текст в метке, то выводится он (если текст нулевого элемента пустой, то будет пусто в отчете). Если надо, чтобы ничего не выводилось, то сделайте дисплей-метод как написал skuul.
И вообще, Аксапта всегда инициализирует числовые поля 0-лями, а текстовые поля пустой строкой "".

Последний раз редактировалось Ace of Database; 28.04.2015 в 15:44.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Множественные запросы по DataArea и VirtualDataAreaList Dreadlock DAX: Программирование 11 24.07.2012 11:43
Открытая сумма по счету-фактуре - как правильно вычислить? IKA DAX: Программирование 7 21.03.2011 19:46
Запросы / Итоги для ЗПР Prophetic DAX: Программирование 5 02.08.2010 15:13
оптимизируем запросы. SHiSHok DAX: Программирование 18 13.09.2009 21:26
Запросы в Аксапта ibc DAX: Программирование 5 08.08.2005 22:47

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

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

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