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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.03.2018, 14:31   #1  
SuperStar88 is offline
SuperStar88
Участник
 
81 / 10 (1) +
Регистрация: 11.08.2017
? переделать SQL-запрос в X++ Query
Как этот SQL-запрос переписать на X++ (Query, QueryBuildDataSource)?
X++:
select _log.*
from SysDataBaseLog _log inner join SqlDictionary _dic 
on _log.Table_ = _dic.TableID and (_log.Field % 65536) = _dic.FieldID
where _log.Table_ = '50591'
order by _log.Field
Особенно интересует приём со связью с вычисляемым полем
Код:
 (_log.Field % 65536) = _dic.FieldID
Старый 02.03.2018, 15:29   #2  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Какая версия АХ ?

В АХ 2012 в таблице SysDataBaseLog нет поля Field, зато для Array-полей в таблице SqlDictionary есть поле Array с индексом, возможно по нему и FieldID можно вычислить и Field из SysDataBaseLog.
Старый 02.03.2018, 16:04   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от SuperStar88 Посмотреть сообщение
Особенно интересует приём со связью с вычисляемым полем
Код:
 (_log.Field % 65536) = _dic.FieldID
https://msdn.microsoft.com/ru-ru/library/gg845841.aspx
За это сообщение автора поблагодарили: SuperStar88 (1).
Старый 02.03.2018, 16:09   #4  
SuperStar88 is offline
SuperStar88
Участник
 
81 / 10 (1) +
Регистрация: 11.08.2017
Версия AX 2009 UP5

а, прошу прощения, там не SysDataBaseLog, а своя таблица SysDataBaseLog_ХХХ

Интересует, как можно через addRange или addLink связать вычисляемое поле с полем другой таблицы.
То есть, берём значение поля одной таблицы, вычисляем остаток от деления на 65536 и результат сравниваем с полем другой таблицы.
Старый 02.03.2018, 16:13   #5  
SuperStar88 is offline
SuperStar88
Участник
 
81 / 10 (1) +
Регистрация: 11.08.2017
Цитата:
Благодарю за ссылку! А можно как-то обойтись без создания вьюшки?
Старый 02.03.2018, 17:00   #6  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Я предложил несколько иной способ связи между таблицами, вместо вычисления остатка от деления в запросе, что сделать в Query мне кажется нельзя, можно попробовать сделать это на арифметических операциях, которые можно запихать в "сложный" Range. Тем более ваш запрос может задваивать(затраивать и т.д.) записи по Array-полям, т.к. в таблице SqlDictionary FieldId не является уникальным в рамках таблицы, уникальна только связка полей FieldId + Array.

Info: ID полей таблицы типа EDT массив (array elements)
Старый 12.03.2018, 12:59   #7  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от SuperStar88 Посмотреть сообщение
Особенно интересует приём со связью с вычисляемым полем
Попробуйте "расширенный диапазон", должно отработать:
X++:
    qbdsDBLog   = query.addDataSource(tablenum(DatabaseLog), "DBlog");
    qbdsSQLDict = qbdsDBLog.addDataSource(tablenum(SqlDictionary), "SQLDict");
    qbdsSQLDict.addLink(fieldnum(DatabaseLog, logTable), fieldnum(SqlDictionary, tabId));
    
    qbdsSQLDict.addRange(fieldnum(SqlDictionary, RecId)).value("(SQLDict.fieldId == DBlog.logField mod 65536)");
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance Troubleshooting Checklist Part 2 Blog bot DAX Blogs 0 09.09.2014 16:11
Преобразование вложенного SQL-запроса в query user_ax DAX: Программирование 9 22.10.2013 17:22
axperf: Important SQL Server Change! - Parameter Sniffing and Query Plan Caching Blog bot DAX Blogs 3 24.05.2010 02:53
SQL мониторинг + прямой запрос к SQL Alex_KD DAX: Программирование 17 29.05.2007 03:58
Собственный SQL запрос в FormDataSource Alexey DAX: База знаний и проекты 0 20.12.2001 00:35

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

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

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