Есть два пути, и выбранный вами путь действительно продиктован гибкостью архитектуры.
Во-первых, вы на правильном пути, переименовав выбранные столбцы в общее имя, так как это имячто используется для привязки данных к элементу управления в отчете.Рассматривали ли вы хранимую процедуру для доступа к данным?Это удаляет запрос из отчета и позволяет настроить хранимый процесс в любой базе данных для возврата необходимых столбцов.Если вы не можете разгрузить сохраненный процесс, вы всегда можете рассчитывать на изменение текста запроса во время выполнения.Поскольку отчеты BIRT не компилируются (они представляют собой XML), вы можете изменять запрос на основе параметров и выполнять его при каждом запуске проекта.Посмотрите на событие onCreate
для набора данных, и вы сможете получить доступ к this.queryText
и выполнить любое динамическое замещение строк, которое вам нужно, через JavaScript.Скрытые параметры - хороший способ помочь изменить / настроить запрос.Если вы правильно строите набор данных, изменение базовых данных может быть таким же простым, как и изменение источника данных, а затем повторная привязка набора данных к новому источнику данных (в окне редактирования набора данных).Я сделал это много раз, и это работает хорошо.Если вы идете по этому пути, я бы добавил источник (и) данных, набор (ы) данных и любые элементы управления, которые они предоставляют данные, в библиотеку отчетов.С помощью библиотеки вы можете использовать элементы управления во многих отчетах и поддерживать их в одном месте.Если вы обновите библиотеку, все отчеты, использующие библиотеку, также будут обновлены.
В качестве альтернативы, если вы действительно хотите использовать полностью повторно используемую стратегию, которая позволит вам создать библиотеку повторно используемых компонентов, вы могли быпроверить бесплатную библиотеку компонентов многократного использования на бирже BIRT ( библиотека компонентов многократного использования ).На мой взгляд, эта стратегия даст вам повторное использование, которое вы ищете, но за счет ремонтопригодности.Это абстракция до степени запутанности.Это требует полностью общих имен для столбцов и элементов управления, которые очень затрудняют отладку.Хотя это не было бы моим первым выбором (вариант выше был бы), другие использовали его успешно, поэтому я подумал, что я бы включил его сюда, так как он напрямую говорит на ваш вопрос.