06.08.2018, 08:26 | #1 |
Участник
|
Доступ к 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 |
Участник
|
нашел такое решение:
public void getFromDialog() { ... q = this.dialog().controller().getDataContractObject('MyReport_DynamicParameter') as Query; } но мне не нравится использование 'MyReport_DynamicParameter', имя сгенерировано и хотелось бы его заменить на что-то имя_класса_независимое (универсальное для копи-пэста) Есть другие варианты по основному вопросу? |
|
06.08.2018, 17:56 | #3 |
Участник
|
засунь текст запроса в любое поле таблицы, которую у тебя генерит data provider класс
__________________
Felix nihil admirari |
|
07.08.2018, 07:18 | #4 |
Участник
|
Цитата:
Если серьезно, то это "костыль", причем идеологически неправильный. |
|
07.08.2018, 07:23 | #5 |
Участник
|
Не подойдет ли что-то вроде:
см TaxReportController_IT.preRunModifyContract() X++: SrsReportRdlDataContract rdlContract; ; rdlContract = this.parmReportContract().parmRdlContract(); //(C)SrsReportDataContract.parmRdlContract() rdlContract.setValue('name', value); |
|
|
За это сообщение автора поблагодарили: Logger (1). |
07.08.2018, 08:12 | #6 |
Участник
|
Цитата:
Т.е. я хочу понять как идеологически правильно доступаться к Query из диалога. Текст запроса я хочу выводить рядом с параметрами из диалога (Даты С По), чтобы видно было наложенные фильтры (Range) Последний раз редактировалось Master-Lomaster; 07.08.2018 в 08:15. |
|
07.08.2018, 10:39 | #7 |
Участник
|
Range и так виден на диалоге. Каждый добавленный рейнджеры кроме спрятанных. Зачем вам там ещё текст ?
|
|
07.08.2018, 17:51 | #8 |
Участник
|
экий ты упрямец, однако! говорят тебе люди: полезай в кузовок и передавай запрос через то, к чему можно легко получить доступ по ту сторону.
не хочешь через дополнительное поле в существующей таблице, сделай, как Мартин, красиво разложив все свои фильтры в отдельной табличке https://community.dynamics.com/365/f...s-ax-2012-ssrs если ты хочешь увидеть что-то типа DataSets("MyCoolDataset).CommandText, то этого, похоже, нету...
__________________
Felix nihil admirari |
|
08.08.2018, 11:19 | #9 |
Участник
|
Ну не без этого. Что есть, то есть.
Я как и Мартин написал метод, который превращает Query нечто другое (у меня просто в строку с перечислением полей и значений фильтра). И мне то всего хотелось передавать эту строку в отчет параметром и выводить как параметр. Для чего? Да для того чтобы пользователь видел что этот отчет построено (например) по номенклатуре начинающейся с буквы А, а дрогой с буквы Б. Т.е. чтобы повысить информативность. |
|
08.08.2018, 15:44 | #10 |
Участник
|
Строку запроса где получаете? В Контроллере? Или ДП?
Создайте в контракте ещё 1 метод parm Query parmQuery() {} и будет у вас на диалоге ваш запрос, который вы запихнете в парм метод из контроллера или uiBuilder-а. |
|
08.08.2018, 16:53 | #11 |
Участник
|
Цитата:
Сообщение от Master-Lomaster
Ну не без этого. Что есть, то есть.
Я как и Мартин написал метод, который превращает Query нечто другое (у меня просто в строку с перечислением полей и значений фильтра). И мне то всего хотелось передавать эту строку в отчет параметром и выводить как параметр. Для чего? Да для того чтобы пользователь видел что этот отчет построено (например) по номенклатуре начинающейся с буквы А, а дрогой с буквы Б. Т.е. чтобы повысить информативность. перед запуском отчёта юзверь может такого наворотить в кверях, что аж заколдобишься, как старик ромуальдыч.
__________________
Felix nihil admirari |
|
13.08.2018, 07:08 | #12 |
Участник
|
Цитата:
Решил так, прямо второе сообщение: Цитата:
Сообщение от Master-Lomaster
нашел такое решение:
public void getFromDialog() { ... q = this.dialog().controller().getDataContractObject('MyReport_DynamicParameter') as Query; } но мне не нравится использование 'MyReport_DynamicParameter', имя сгенерировано и хотелось бы его заменить на что-то имя_класса_независимое (универсальное для копи-пэста) Есть другие варианты по основному вопросу? |
|
13.08.2018, 07:14 | #13 |
Участник
|
Цитата:
На текущий момент у меня в UIBuilder показывается Query. Видимо из-за того, что в SRSReportDataProviderBase есть атрибут SRSReportQueryAttribute(queryStr(MyQuery)) (все описано в шапке) От кого должен наследоваться контроллер? Для "parm Query parmQuery()" никаких магических атрибутов не требуется? |
|
Теги |
2012, query, srsreportdataproviderbase, ssrs, uibuilder |
|
|