Я строю свой первый отчет в BIRT.
Очень быстро я столкнулся с проблемой, в которой я хотел отобразить некоторый текст или данные на основе выражения, которое включало данные из двух разных таблиц (не таблиц, которые могут / должны быть объединены - (гипотетический пример - возьмите оценку ACT студента из его записи в таблице учеников и сравните ее с записью в таблице статистики для статистики ACT). Вскоре я понял, что элемент данных должен быть привязан к набору данных (только к одному из них).
Я нашел аналогичный вопрос в списке рассылки BIRT, который помог мне найти решение - я могу привязать отдельный элемент данных к другому набору данных, но он все еще может получить доступ к элементам своего контейнера. Я могу отправить параметры в набор данных, к которому привязан элемент (например, «ACT» в примере, который я упомянул выше).
Однако в конце концов я пришел к ситуации, когда мне нужно было использовать данные из трех разных таблиц. Я застрял здесь, и я предполагаю, что есть способ сделать это с помощью возможностей сценариев, но мне еще предстоит увидеть в документации способ извлечения данных из набора данных - все, с чем я имел дело до сих пор, связанный с привязкой элемента отчета к набору данных.
Чтобы быть ясным, я видел, что могу добавлять функции JavaScript в раздел инициализации отчета верхнего уровня (и вызывать их из выражения в элементе данных), но я не вижу, как в сценарии я могу запросить любой из моих наборы данных - в отличие от взаимодействия только с набором данных, привязанным к моему элементу данных).
Как я могу получить доступ к произвольному (хотя и уже определенному) набору данных из JavaScript в BIRT? (Или как я могу получить доступ к более чем двум наборам данных из элемента - одному, к которому он привязан, и другому, к которому привязан его контейнер?)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Некоторое время я не пробовал этого делать. Непосредственный ответ, который приходит на ум, заключается в том, что вам нужно поместить третий набор данных в таблицу (может быть установлена видимость false), и вам нужно будет заполнить значения таблицы в GlobalValue. Затем вы можете получить GlobalValues из элемента управления данными через скрипт.
Я знаю, что это некрасиво. Я посмотрю на выходных и посмотрю, добавлены ли в 2.3 какие-либо функции, которые упрощают эту задачу.
Если это окажется маршрутом, будет ли способ легко «запросить» таблицу, чтобы получить нужную мне ячейку? Эта таблица может быть довольно большой, поэтому я не знаю, действительно ли это будет решением.
Использовать
this.getValue()which will return the current column's binding value instead of
dataSetRow["RUN"]
Я задавался вопросом, могу ли я сделать что-то подобное (привязать элемент к нужным мне данным, сделать его невидимым) - но я подумал, что, безусловно, со всеми возможными сценариями, которые кажутся существующими, должен быть лучший способ! Буду признателен вам услышать все, что вы узнаете.