07.05.2020, 17:31 | #1 |
Участник
|
Как создать условие (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 |
Участник
|
Работа с View ничем не отличается от работы с таблицами. В чём конкретно у вас сложность? Как бы вы решали задачу если бы вместо View у вас была бы обыкновенная таблица?
|
|
08.05.2020, 11:24 | #3 |
Участник
|
Надо использовать классы Query, QueryBuildDataSource, QueryBuildRange для работы с существующем View'ом?
|
|
08.05.2020, 11:26 | #4 |
Участник
|
Или через табличную переменную?
|
|
08.05.2020, 12:30 | #5 |
Участник
|
Да. Имя View можно подставить везде где можно подставить имя таблицы и в коде и в свойствах. Для системы View это полноценная таблица
|
|
08.05.2020, 12:44 | #6 |
Участник
|
Цитата:
Пример Table1 table1; ; есть метода типа table1.FindRange(...)? Как у класса QueryBuildDataSource |
|
08.05.2020, 12:49 | #7 |
Участник
|
Какой эффект вы ожидаете от такой конструкции? Как вы собираетесь воспользоватся результатом после применения такого "Range"?
|
|
08.05.2020, 13:00 | #8 |
Участник
|
В Аксапте есть два стандартных способа выбрать данные. Через встроенные в язык операторы select / while select или через классы Query/QueryBuildDataSource/QueryRun. И там и там можно наравне с таблицами использовать View. И там и там можно накладывать условия на выбираемые данные. Нужно использовать предложение where в случае с select; addRange в случае с QueryBuildDataSource.
|
|
08.05.2020, 14:15 | #9 |
Участник
|
Цитата:
В отчёте задаётся период выборки, нужно чтобы условие (дата начала, дата конца) из периода передавалось в View в виде Range на поле типа Date, чтобы в отчёте были данные в соответствии с выбранным периодом. |
|
08.05.2020, 14:24 | #10 |
Участник
|
Я бы вообще хотел бы в рантайме формировать SQL-запрос по условию выбранного периода и передавать (SQL-запрос) отчёту (Report) если это возможно.
|
|
08.05.2020, 15:36 | #11 |
Участник
|
View ненужно и не правильно менять в рантайме. Это глобальный объект уровня базы данных.
Ваш отчёт внутри себя строит запрос к базе данных (к реальной таблице или к View не столь важно). Вот в этот запрос, а не во View, и нужно встроить нужный вам фильтр. Цитата:
Проще всего добавить в отчёт поддержку необходимых параметров. В самом отчёте перекрыть метод инициализации и написать код, который добавить в запрос необходимые фильтры. Значения этих фильтров нужно будет в отчёт передать. Чтобы разобраться как передать внутрь отчёта параметры смотрите класс Args. Вот пример: передача параметров в Report |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|