#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.