04.04.2024, 17:21 | #1 |
Участник
|
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); И теперь при запуске отчета выдается ошибка: 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 |
Участник
|
AOS и SSRS тоже перестартовала. Но не помогло
Help! Последний раз редактировалось Lankey; 04.04.2024 в 21:10. |
|
04.04.2024, 22:48 | #3 |
Участник
|
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 |
Участник
|
Конкретизирую совй вопрос:
Получается, чот AxQuery.ExecuteQuery("select * from MyQueryInAX", d); не видит полей Enum Почему это так ? Как это лучше обойти(через int или str), если это поле нужно для ssrs отчета? Заранее благодарю |
|
05.04.2024, 09:07 | #5 |
Участник
|
Посмотрите вот тут - 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 |
Участник
|
Спасибо, я, может, не достаточно конкретно описала, но ваша ссылка "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 |
Участник
|
Глобально:
Отчет 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 |
Участник
|
п.1 - выглядит странновато, если учитывать, что в таблицах AX куча полей с типом Enum. Насколько я понимаю сделать отчет на основе запроса в котором будет Enum поле в колонке - не проблема, если там не data method используется, а просто как источник указывается запрос ?
можно как то посмотреть, какие имена столбцов и типы возвращает AxQuery.ExecuteQuery("select * from MyQueryInAX") когда добавляется в запрос новое поле с типом enum ? Возможно там какое то скрытое преобразование делается для этого типа ? п.2 - Если данные на каждый запуск предварительно собираются в табличку - то можно сделать как проще - кажется в этом случае строка. Если же данные будут хранится на постоянной основе - то тут а) строка больше места занимает б) при изменении метки enumа возможно придется обновлять данные.
__________________
Sergey Nefedov |
|
Теги |
ax2009, ssrs |
|
|