Может ли BIRT использовать вывод одной таблицы в другую таблицу — разные наборы данных?

#java #mysql #sql #report #birt

#java #mysql #sql #Сообщить #birt

Вопрос:

Проблема, с которой я сталкиваюсь, заключается в:

У меня есть таблица с выводом из одного набора данных X, в поле вывода у меня есть агрегация подсчета, которая возвращает мне число.

Что я хочу сделать: используйте это число в другой таблице, в которой уже есть другой набор данных Y, я хочу, чтобы конечное число обрабатывалось непосредственно моим подсчетом агрегации. Соединения таблицы в этом случае бесполезны, потому что она не вернет обработанное «число». объяснение

Ответ №1:

Разумный способ сделать это — создать переменную отчета для хранения агрегации набора данных X. Например, мы назовем его aggregationX:

введите описание изображения здесь

После создания переменной щелкните данные агрегации в таблице X -> script -> onCreate

Введите этот скрипт:

 vars["aggregationX"]=this.getValue();
  

Затем вы можете использовать vars[«aggregationX»] Во всех выражениях элементов отчета, размещенных после агрегации X: в вычисляемых столбцах набора данных Y, привязках данных таблицы Y, фильтрах, выражениях сортировки, выражениях выделения, динамическом тексте и т. Д.

Комментарии:

1. Я бы предпочел vars[«aggregationX»] = row[«Aggregation»]; (но см. Мой ответ об именовании привязок столбцов).

2. Очень приятно, что это было полезно

Ответ №2:

Первое правило: всегда присваивайте своим привязкам столбцов значимые имена (не только: «Агрегация», но и «Нумерация» или что-то подобное)!

Второе правило: переменные отчета являются глобальными переменными, и поэтому они считаются плохой практикой — используйте их, только если вы не нашли другого решения.

В наиболее распространенном случае вы можете поместить таблицу (на основе набора данных) y в строку сведений таблицы x. Затем вы можете получить доступ к счетчику, используя синтаксическую строку._outer[«numRows»] . И если вам также нужно количество в наборе данных y, вы можете легко передать его в качестве параметра набора данных (используйте кнопку «привязка параметров» на вкладке привязка).

Вам нужно только решение переменной отчета, предоставленное Домиником, если (по какой-либо причине) ваш макет не позволяет поместить таблицу y в строку сведений таблицы x.