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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.08.2018, 08:26   #1  
Master-Lomaster is offline
Master-Lomaster
Участник
 
7 / 10 (1) +
Регистрация: 14.06.2013
Доступ к Query внутри UIBuilder для SSRS
Здравствуйте!
Помогите с вопросом по DAX2012, сам приемлемого решения не вижу.

Вопрос в том, чтобы передать текст запроса в отчет, просто query.dataSourceNo(1).toString().

Все по шаблону - SSRS отчет, получающий данные от SRSReportDataProviderBase, с атрибутами [SRSReportQueryAttribute(queryStr(MyQuery)), SRSReportParameterAttribute(classStr(MyContractClass))].
MyContractClass связан с MyUIBuilderClass.

Вопрос, как в MyUIBuilderClass.geteFromDialog получить query?
Старый 06.08.2018, 11:16   #2  
Master-Lomaster is offline
Master-Lomaster
Участник
 
7 / 10 (1) +
Регистрация: 14.06.2013
нашел такое решение:
public void getFromDialog()
{
...
q = this.dialog().controller().getDataContractObject('MyReport_DynamicParameter') as Query;
}

но мне не нравится использование 'MyReport_DynamicParameter', имя сгенерировано и хотелось бы его заменить на что-то имя_класса_независимое (универсальное для копи-пэста)

Есть другие варианты по основному вопросу?
Старый 06.08.2018, 17:56   #3  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
463 / 217 (8) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
засунь текст запроса в любое поле таблицы, которую у тебя генерит data provider класс
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 07.08.2018, 07:18   #4  
Master-Lomaster is offline
Master-Lomaster
Участник
 
7 / 10 (1) +
Регистрация: 14.06.2013
Цитата:
Сообщение от wojzeh Посмотреть сообщение
засунь текст запроса в любое поле таблицы, которую у тебя генерит data provider класс
мне религиозные убеждения не позволяют так делать, не хочу стобы за моей спиной потом стали шептаться о моей неадекватности.
Если серьезно, то это "костыль", причем идеологически неправильный.
Старый 07.08.2018, 07:23   #5  
Pandasama is offline
Pandasama
Участник
 
130 / 18 (1) ++
Регистрация: 11.08.2014
Адрес: Барнаул
Не подойдет ли что-то вроде:
см TaxReportController_IT.preRunModifyContract()

X++:
SrsReportRdlDataContract    rdlContract;
;
rdlContract = this.parmReportContract().parmRdlContract(); //(C)SrsReportDataContract.parmRdlContract()

rdlContract.setValue('name', value);
в SSRS-отчете этот name потом виден как параметр (я не совсем понял, где именно на той стороне вы передаваемый текст запроса использовать собираетесь)
Старый 07.08.2018, 08:12   #6  
Master-Lomaster is offline
Master-Lomaster
Участник
 
7 / 10 (1) +
Регистрация: 14.06.2013
Цитата:
Сообщение от Pandasama Посмотреть сообщение
Не подойдет ли что-то вроде:
...в SSRS-отчете этот name потом виден как параметр (я не совсем понял, где именно на той стороне вы передаваемый текст запроса использовать собираетесь)
У меня нет проблемы с передачей параметра, у меня вопрос по доступу к Query!
Т.е. я хочу понять как идеологически правильно доступаться к Query из диалога.
Текст запроса я хочу выводить рядом с параметрами из диалога (Даты С По), чтобы видно было наложенные фильтры (Range)

Последний раз редактировалось Master-Lomaster; 07.08.2018 в 08:15.
Старый 07.08.2018, 10:39   #7  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
480 / 482 (17) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Range и так виден на диалоге. Каждый добавленный рейнджеры кроме спрятанных. Зачем вам там ещё текст ?
Старый 07.08.2018, 17:51   #8  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
463 / 217 (8) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
экий ты упрямец, однако! говорят тебе люди: полезай в кузовок и передавай запрос через то, к чему можно легко получить доступ по ту сторону.

не хочешь через дополнительное поле в существующей таблице, сделай, как Мартин, красиво разложив все свои фильтры в отдельной табличке https://community.dynamics.com/365/f...s-ax-2012-ssrs

если ты хочешь увидеть что-то типа DataSets("MyCoolDataset).CommandText, то этого, похоже, нету...
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 08.08.2018, 11:19   #9  
Master-Lomaster is offline
Master-Lomaster
Участник
 
7 / 10 (1) +
Регистрация: 14.06.2013
Цитата:
Сообщение от wojzeh Посмотреть сообщение
экий ты упрямец, однако!
Ну не без этого. Что есть, то есть.

Я как и Мартин написал метод, который превращает Query нечто другое (у меня просто в строку с перечислением полей и значений фильтра). И мне то всего хотелось передавать эту строку в отчет параметром и выводить как параметр.

Для чего? Да для того чтобы пользователь видел что этот отчет построено (например) по номенклатуре начинающейся с буквы А, а дрогой с буквы Б. Т.е. чтобы повысить информативность.
Старый 08.08.2018, 15:44   #10  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
585 / 37 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Строку запроса где получаете? В Контроллере? Или ДП?
Создайте в контракте ещё 1 метод
parm Query parmQuery()
{}
и будет у вас на диалоге ваш запрос, который вы запихнете в парм метод из контроллера или uiBuilder-а.
Старый 08.08.2018, 16:53   #11  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
463 / 217 (8) ++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от Master-Lomaster Посмотреть сообщение
Ну не без этого. Что есть, то есть.

Я как и Мартин написал метод, который превращает Query нечто другое (у меня просто в строку с перечислением полей и значений фильтра). И мне то всего хотелось передавать эту строку в отчет параметром и выводить как параметр.

Для чего? Да для того чтобы пользователь видел что этот отчет построено (например) по номенклатуре начинающейся с буквы А, а дрогой с буквы Б. Т.е. чтобы повысить информативность.
так ты понял или нет, как твою задачу решить?

перед запуском отчёта юзверь может такого наворотить в кверях, что аж заколдобишься, как старик ромуальдыч.
__________________
Felix nihil admirari
-----------------------------------------------------------------------------------------------
AX2012
Старый 13.08.2018, 07:08   #12  
Master-Lomaster is offline
Master-Lomaster
Участник
 
7 / 10 (1) +
Регистрация: 14.06.2013
Цитата:
Сообщение от wojzeh Посмотреть сообщение
так ты понял или нет, как твою задачу решить?
перед запуском отчёта юзверь может такого наворотить в кверях, что аж заколдобишься, как старик ромуальдыч.
Это проблемы пользователя, я их хочу информировать о том, что они навводили.

Решил так, прямо второе сообщение:
Цитата:
Сообщение от Master-Lomaster Посмотреть сообщение
нашел такое решение:
public void getFromDialog()
{
...
q = this.dialog().controller().getDataContractObject('MyReport_DynamicParameter') as Query;
}

но мне не нравится использование 'MyReport_DynamicParameter', имя сгенерировано и хотелось бы его заменить на что-то имя_класса_независимое (универсальное для копи-пэста)

Есть другие варианты по основному вопросу?
Старый 13.08.2018, 07:14   #13  
Master-Lomaster is offline
Master-Lomaster
Участник
 
7 / 10 (1) +
Регистрация: 14.06.2013
Цитата:
Сообщение от user_ax Посмотреть сообщение
Строку запроса где получаете? В Контроллере? Или ДП?
Создайте в контракте ещё 1 метод
parm Query parmQuery()
{}
и будет у вас на диалоге ваш запрос, который вы запихнете в парм метод из контроллера или uiBuilder-а.
Можно подробнее?
На текущий момент у меня в UIBuilder показывается Query. Видимо из-за того, что в SRSReportDataProviderBase есть атрибут SRSReportQueryAttribute(queryStr(MyQuery)) (все описано в шапке)

От кого должен наследоваться контроллер? Для "parm Query parmQuery()" никаких магических атрибутов не требуется?
Теги
2012, query, srsreportdataproviderbase, uibuilder

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axperf: Improving SSRS Query-based Report Performance by not Using Display Methods - Part 3 Blog bot DAX Blogs 0 23.07.2013 21:12
dax-lessons: Get the underlying SSRS Report Query, reset query , add your own ranges and execute report [Dynamics AX 2012, X++] Blog bot DAX Blogs 0 30.04.2013 01:13
ax-erp: How to Set the Query Range on a SSRS Report Blog bot DAX Blogs 0 18.10.2012 19:11
paruvella: Dynamics Ax - Simple SSRS report example by using Ax-Query and Ranges Blog bot DAX Blogs 0 08.01.2010 16:05
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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