Мне нужно реализовать следующий отчет в Pentaho Reporting с использованием java:
Student 1
- Calification 1
- Calification 2
Student 2
- Calification 1
- Calification 2
...
Отчет получает всю информацию из кода.У него нет доступа к базе данных.Я реализую это с помощью подотчетов.(Это упрощенный пример. У меня есть другие поля в ученике, поэтому я не могу использовать группирование)
Я попробовал следующий подход:
Создание двух табличных моделей для DataFactory.
TypedTableModel model = new TypedTableModel();
model.addColumn("studentId", String.class);
model.addColumn("calification", String.class);
model.addRow("1", "10");
model.addRow("1", "10");
model.addRow("2", "5");
TypedTableModel model2 = new TypedTableModel();
model2.addColumn("studentId", String.class);
model2.addColumn("studentName", String.class);
model2.addRow("1", "Name 1");
model2.addRow("2", "Name 2");
TableDataFactory dataFactory = new TableDataFactory();
dataFactory.addTable("master-query", model2);
dataFactory.addTable("subreport-query", model);
Затем в основном отчете я устанавливаю query.name = master-query в подотчете, я устанавливаю query.name = subreport-query
Что я получаю:
Name 1
10
10
5
Name 2
10
10
5
В подотчете мне удалось импортировать параметр "studentId" из основного отчета.Мне нужно отфильтровать калибровки по studentId, чтобы отображать только оценки каждого студента.Мне нужно это:
Name 1
10
10
Name 2
5
Как мне это сделать?Могу ли я реализовать запрос по «subreport-query»?Как?
Все примеры веб-запроса к соединениям JDBC с использованием $ {studentId}, но мне нужно запросить внешнюю DataFactory.
Спасибо!