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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.12.2011, 18:02   #1  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Регистрация: 27.10.2011
QueryRun, получить field квери по имени
Вечер добрый.

Есть большая QueryRun в АОТ, состоящая из 5 таблиц.
Есть табличка с пользовательскими форматами (для различных экспортов), где определяются поля из той большой квери и их порядок вывода. Табличку заполняли руками

Вопрос: как в цикле получить поле из квери зная имя поля и имя DS, чтобы не писать switch и не обрабатывать руками?

Спасибо.
Старый 20.12.2011, 18:40   #2  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Регистрация: 27.10.2011
Спасибо _scorp_ подсказал что есть замечательный способ доступа к полям курсора через
X++:
cursor.(fieldname2id(tablenum(Table), 'ItemId'));
Старый 20.12.2011, 21:04   #3  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Можно проще:
X++:
cursor.(fieldnum(Table, Field))
За это сообщение автора поблагодарили: alvares (1).
Старый 21.12.2011, 08:14   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
Можно проще:
X++:
cursor.(fieldnum(Table, Field))
Это только если на этапе компиляции знаешь имя поля.
Но если это так, то тогда можно ещё проще
X++:
cursor.Field

Последний раз редактировалось S.Kuskov; 21.12.2011 в 08:35.
Старый 21.12.2011, 10:37   #5  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Это только если на этапе компиляции знаешь имя поля.
Но если это так, то тогда можно ещё проще
X++:
cursor.Field
Это только если на момент компиляции cursor - конкретная таблица\мап.
Возможно - это Common. Смотря как организовать цикл - автор не уточняет...
__________________
Zhirenkov Vitaly
Старый 21.12.2011, 11:52   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от ZVV Посмотреть сообщение
Это только если на момент компиляции cursor - конкретная таблица\мап.
Возможно - это Common. Смотря как организовать цикл - автор не уточняет...
Использование метафункции fieldnum всё-таки подразумевает, что и имя таблицы так же известно на этапе компиляциии. А если так, то любой обезличенный курсор можно типизировать простым присваиванием.
X++:
MyTable MyTable;

MyTable = common; // типизируем "обезличенный" курсор
MyTable.Field // вуаля
В общем, я не вижу причин для использования такой конструкции cursor.(fieldnum(Table, Field)) .

P.S.: Кроме может быть обхода ошибки компиляции "Поле должно быть элементом данных, допускающим использование в операторе присвоения." при присваивании значений системным полям
Теги
queryrun

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Получить Transact-SQL из QueryRun imir DAX: Программирование 12 21.12.2011 16:45
axaptapedia: Table Field Group Blog bot DAX Blogs 0 02.07.2011 05:37
axaptapedia: Table Field Group Blog bot DAX Blogs 0 25.06.2011 06:33
Халтура в AX2009: идентификаторы из USR в GLS, GLP и даже SYS-слоях EVGL DAX: Программирование 2 21.02.2011 19:44
DynamicsAxSCM: The InventTrans table. Explore various field usages. Blog bot DAX Blogs 0 09.11.2010 19:10

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

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

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