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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.04.2024, 17:21   #1  
Lankey is offline
Lankey
Участник
 
58 / 13 (1) ++
Регистрация: 19.05.2020
Query не видит новых полей, когда вызываю из SSRS
В data method в SSRS для AX2009 нужно получить данные из запроса MyQueryInAX, что создан в AOT. Делается через:
X++:
Dictionary<string, object> d = new Dictionary<string, object>();
        d.Add("MyTableFromMyQueryInAX.CurrentIdStr", currentId);
        dtCustTable = null;
        dtCustTable = AxQuery.ExecuteQuery("select * from MyQueryInAX", d);
Все ок, но я добавила поле в струкруру этого запроса MyQueryInAX (точнее в таблицу, на основе которой сделан query, и оно в запросе появилось).
И теперь при запуске отчета выдается ошибка:

Data method 'dmMyMethod' invocation failed. Fix the data method so that it returns a valid System.DataTable before binding to it.
Original error message:
Column 'MyNewField' does not belong to table MyQueryInAX.

т.е что это новое поле на найдено . Синхронизация и компиляция в AX сделаны. Что еще нужно сделать?

Последний раз редактировалось Lankey; 04.04.2024 в 17:24.
Старый 04.04.2024, 19:46   #2  
Lankey is offline
Lankey
Участник
 
58 / 13 (1) ++
Регистрация: 19.05.2020
AOS и SSRS тоже перестартовала. Но не помогло
Help!

Последний раз редактировалось Lankey; 04.04.2024 в 21:10.
Старый 04.04.2024, 22:48   #3  
Lankey is offline
Lankey
Участник
 
58 / 13 (1) ++
Регистрация: 19.05.2020
Upd: Добавила в таблицу в AX(и соответственно, запрос) поля, основанные на EDT от Int и Str
Никаких ошибок - я могу их считать через AxQuery.ExecuteQuery("select * from MyQueryInAX", d);
А вот как только добавляю поле, основанное на Enum , то выдает ошибку , что такого поля нет(. То есть, не видит

Могу обойти, объявив поле в таблице как int, но интересно известная ли это проблема с enum, и есть ли решения?

Также? тк в отчете все равно нужно показывать не сам enum, а метку соответствующего значения, то, может, сразу сделать поле str вместо enum и заполнять сразу строкой ( я планировала в отчет передавать строки с enum, а потом подтягивать метки через объектную модель axSession.CreateAxaptaObject("DictEnum", Convert.ToString(enum_id)); и тд ... Обсуждение в параллельной ветке на форуме)

Последний раз редактировалось Lankey; 04.04.2024 в 23:01.
Старый 05.04.2024, 08:51   #4  
Lankey is offline
Lankey
Участник
 
58 / 13 (1) ++
Регистрация: 19.05.2020
Конкретизирую совй вопрос:
Получается, чот AxQuery.ExecuteQuery("select * from MyQueryInAX", d); не видит полей Enum
Почему это так ?
Как это лучше обойти(через int или str), если это поле нужно для ssrs отчета?

Заранее благодарю
Старый 05.04.2024, 09:07   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Посмотрите вот тут - Ax2009 С чего начать читать SSRS - в этой теме есть последнее сообщение, которое ведет на видео уроки SSRS + AX 2009.

Вот, например, 25 видео урок - AX2009 SSRS 25 Getting the Values of an AX Enum into a Report.

https://www.youtube.com/watch?v=GA6u...C41AF&index=26

Там же есть какие то дополнительные ссылки на ресурсы, которые можно попробовать изучить, если ссылки рабочие, ну или как вариант попробовать дополнительно поискать информацию )
__________________
Sergey Nefedov
Старый 05.04.2024, 09:13   #6  
Lankey is offline
Lankey
Участник
 
58 / 13 (1) ++
Регистрация: 19.05.2020
Спасибо, я, может, не достаточно конкретно описала, но ваша ссылка "AX2009 SSRS 25 Getting the Values of an AX Enum into a Report." не имеет отношения к описываемой мной проблеме.

Мой dataMethod вытягивает строки данных из Ax через AxQuery.ExecuteQuery("select * from MyQueryInAX", d).
Я эти rows перебираю и могу прочитать значение myRow['FieldA'] , если FieldA - типа str или int. Но вот если его тип в аксапте Enum, то выдается ошибка, что такое поле не существует

Последний раз редактировалось Lankey; 05.04.2024 в 09:30.
Старый 05.04.2024, 09:48   #7  
Lankey is offline
Lankey
Участник
 
58 / 13 (1) ++
Регистрация: 19.05.2020
Глобально:
Отчет custAging c кучей кастомизаций и оптимизаций.
Моя задача - добавить колонку в отчет, основанную на поле типа Enum
Для этого все, что мне нужно - добавить нужное поле в существующий уже запрос MyQueryInAX на стороне Ax, а на стороне SSRS dataSet там основан на dataMethod, в котором данные читаются через AxQuery.ExecuteQuery("select * from MyQueryInAX", d).
Эти rows там перебираются и соответствующие значения myRow['FieldA'] обрабатываются и вставляются в dataSet. Так вот все ок, если FieldA - типа str или int в аксапте. Но вот если его тип в аксапте Enum, то выдается ошибка, что такое поле не существует.
Поэтому пытаюсь понять
1) почему AxQuery.ExecuteQuery не работает с Enum ?
2) Если я не могу получить поле enum, то у меня 2 опции:
a) сделать поле на стороне Ax типа int вместо enum ( а потом уж подтягивать метки для отображения в отчете).
b) Cразу уж делать str и туда сразу писать значение метки, соответствующее значению из поля enum
Какую опцию лучше выбрать?

Последний раз редактировалось Lankey; 05.04.2024 в 09:53.
Старый 05.04.2024, 10:38   #8  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
п.1 - выглядит странновато, если учитывать, что в таблицах AX куча полей с типом Enum. Насколько я понимаю сделать отчет на основе запроса в котором будет Enum поле в колонке - не проблема, если там не data method используется, а просто как источник указывается запрос ?

можно как то посмотреть, какие имена столбцов и типы возвращает AxQuery.ExecuteQuery("select * from MyQueryInAX") когда добавляется в запрос новое поле с типом enum ? Возможно там какое то скрытое преобразование делается для этого типа ?

п.2 - Если данные на каждый запуск предварительно собираются в табличку - то можно сделать как проще - кажется в этом случае строка. Если же данные будут хранится на постоянной основе - то тут а) строка больше места занимает б) при изменении метки enumа возможно придется обновлять данные.
__________________
Sergey Nefedov
Теги
ax2009, ssrs

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как заставить query добавленный в run time отобразится в диалоговом окне SSRS отчета? Morpheus DAX: Программирование 1 03.03.2015 22:57
kamalblogs: SSRS Tip: Prevent report execution through controller – Dynamics Ax 2012 Blog bot DAX Blogs 0 25.09.2013 14:11
AIF: OData Query Service Blog bot DAX Blogs 0 24.08.2011 09:11
query по произведению двух полей Gorynych_imported DAX: Программирование 1 27.04.2006 08:50
query в наследнике RunBase отображал группу полей, котор я хочу... Tired DAX: Программирование 2 20.09.2005 14:12
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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