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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.05.2020, 17:31   #1  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
? Как создать условие (Range) для Data Source представления (View) который DataSource у отчета(Report)
Здравствуйте.
Есть Report (Report1), DataSource у Report1 представление View (View1), у View1 DataSorceView1
Перед формированием отчёта нужно задать условие (Range) у DataSorceView1 на поле с датами в диапазоне дат.
отчет вызывается вот так
public void run()
{
Args args = new Args();
ReportRun reportRun;
;

args.name(reportStr(Report1));
args.caller(this);
reportRun = ClassFactory.reportRunClass(args);
reportRun.init();
reportRun.run();

//super();
}
Старый 07.05.2020, 17:49   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Работа с View ничем не отличается от работы с таблицами. В чём конкретно у вас сложность? Как бы вы решали задачу если бы вместо View у вас была бы обыкновенная таблица?
Старый 08.05.2020, 11:24   #3  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
?
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Работа с View ничем не отличается от работы с таблицами. В чём конкретно у вас сложность? Как бы вы решали задачу если бы вместо View у вас была бы обыкновенная таблица?
Надо использовать классы Query, QueryBuildDataSource, QueryBuildRange для работы с существующем View'ом?
Старый 08.05.2020, 11:26   #4  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Или через табличную переменную?
Старый 08.05.2020, 12:30   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Да. Имя View можно подставить везде где можно подставить имя таблицы и в коде и в свойствах. Для системы View это полноценная таблица
Старый 08.05.2020, 12:44   #6  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
?
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Да. Имя View можно подставить везде где можно подставить имя таблицы и в коде и в свойствах. Для системы View это полноценная таблица
Хорошо, если табличная переменная, какое свойство (метод) задаёт значение Range?
Пример
Table1 table1;
;
есть метода типа table1.FindRange(...)? Как у класса QueryBuildDataSource
Старый 08.05.2020, 12:49   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Metrofun Посмотреть сообщение
Хорошо, если табличная переменная, какое свойство (метод) задаёт значение Range?
Пример
Table1 table1;
;
есть метода типа table1.FindRange(...)? Как у класса QueryBuildDataSource
Какой эффект вы ожидаете от такой конструкции? Как вы собираетесь воспользоватся результатом после применения такого "Range"?
Старый 08.05.2020, 13:00   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
В Аксапте есть два стандартных способа выбрать данные. Через встроенные в язык операторы select / while select или через классы Query/QueryBuildDataSource/QueryRun. И там и там можно наравне с таблицами использовать View. И там и там можно накладывать условия на выбираемые данные. Нужно использовать предложение where в случае с select; addRange в случае с QueryBuildDataSource.
Старый 08.05.2020, 14:15   #9  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Какой эффект вы ожидаете от такой конструкции? Как вы собираетесь воспользоватся результатом после применения такого "Range"?
Смысл такой, есть отчёт (Report) DataSource у которого View.
В отчёте задаётся период выборки, нужно чтобы условие (дата начала, дата конца) из периода передавалось в View в виде Range на поле типа Date, чтобы в отчёте были данные в соответствии с выбранным периодом.
Старый 08.05.2020, 14:24   #10  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Я бы вообще хотел бы в рантайме формировать SQL-запрос по условию выбранного периода и передавать (SQL-запрос) отчёту (Report) если это возможно.
Старый 08.05.2020, 15:36   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
View ненужно и не правильно менять в рантайме. Это глобальный объект уровня базы данных.
Ваш отчёт внутри себя строит запрос к базе данных (к реальной таблице или к View не столь важно). Вот в этот запрос, а не во View, и нужно встроить нужный вам фильтр.

Цитата:
Сообщение от Metrofun Посмотреть сообщение
Я бы вообще хотел бы в рантайме формировать SQL-запрос по условию выбранного периода и передавать (SQL-запрос) отчёту (Report) если это возможно.
Запрос является неотъемлемой частью отчёта. В общем случае нельзя просто так взять и заставить отчёт выполнить произвольный запрос. Как правило структура запроса сильно связана с дизайном его печатной формы.
Проще всего добавить в отчёт поддержку необходимых параметров. В самом отчёте перекрыть метод инициализации и написать код, который добавить в запрос необходимые фильтры. Значения этих фильтров нужно будет в отчёт передать. Чтобы разобраться как передать внутрь отчёта параметры смотрите класс Args.

Вот пример: передача параметров в Report
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: SEPA affected objects Blog bot DAX Blogs 0 29.11.2013 13:11
dynamicsaxbi: Best Practices: Report Data Methods Blog bot DAX Blogs 0 28.05.2013 15:11
sumitsaxfactor: Building a simple report – Using Report Data Provider Blog bot DAX Blogs 9 11.09.2012 10:17
dax-lessons: Report Data provider [RDP] as data source type in data set – SSRS reports [Dynamics ax 2012] Blog bot DAX Blogs 0 06.09.2011 00:12
Использование View как Data Source или Нормализация Базы Знаний в Axapta rohlenko DAX: Программирование 15 17.02.2005 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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