#birt
#birt
Вопрос:
Мы используем Eclipse (Galileo) для создания некоторых пользовательских отчетов BIRT (версия 2.5) для SilkCentral Test Manager (версия 11). При создании отчета в SCTM мы должны указать SQL-запрос, который будет использоваться для отчета. Мы также должны указать SQL-запрос при разработке отчета BIRT в Eclipse.
Я знаю, что в инструкции SCTM SQL мы могли бы указать параметры для извлечения на основе текущих настроек, таких как текущий выбранный проект:
WHERE TPN.PROJECTID_FK = ${$PROJECTID}
Я думал, что это будет перенесено на отчет BIRT, связанный с отчетом SCTM, но это не так. Я создал новый отчет в SCTM и указал следующий запрос (который не содержит информации, которая будет отображаться в отчете BIRT):
SELECT proj."ProjectName", proj."ProjectID_pk"
FROM "Silk"."SCC_Projects" AS proj
Затем я перешел на вкладку «Отчет» и связал пользовательский отчет, и отчет отображался правильно, доказывая, что он использует источник данных / наборы данных из BIRT, а не SQL, предоставленный в SCTM.
Проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы пользовательский отчет отображал текущий выбранный проект, но я не могу правильно указать его в Eclipse. Мне это нужно, потому что я хочу иметь только один шаблон отчета, который будет использоваться для нескольких проектов, вместо того, чтобы загружать пользовательский отчет для каждого отдельного проекта.
-
Жестко заданное значение для проекта определенно не работает:
ГДЕ TPN.PROJECTID_FK = 34
-
Я попытался установить его в качестве параметра (Name=ProjectID, DataType= Integer, DisplayType=Текстовое поле, defaultValue = 34).
ГДЕ TPN.PROJECTID_FK = ?
Когда это выполняется, отчет извлекает значение по умолчанию, а не текущий выбранный проект.
-
Я попытался установить его в качестве динамического параметра (Name=ProjectID, DataType= Integer, DisplayType=ListBox, DataSet= ProjectID, SelectValueColumn=ProjectID_pk, SelectDisplayText=ProjectName, defaultValue= 36)
Это также извлекает значение по умолчанию при запуске отчета.
Значение по умолчанию — обязательное поле, поэтому я не знаю, что делать, чтобы заставить это работать должным образом.
Есть предложения / решения?
Ответ №1:
Вот решение, которое я придумал, используя и пример из BirtReports.doc с сайта Borland:
В SCTM я отредактировал SQL-запрос из
WHERE TPN.PROJECTID_FK = ${$PROJECTID}
Для
WHERE TPN.PROJECTID_FK = ${currentProject|34|ProjectId}
Это создает параметр с именем CurrentProject, который передает значение 34 в отчет BIRT под именем параметра rp_currentProject.
Затем я отредактировал параметр ProjectID отчета BIRT, чтобы он имел следующие значения: Name=rp_currentProject, DataType=Integer, DisplayType=TextBox, defaultValue = Empty / Null .
В наборе данных для отчета я отредактировал ? параметр должен быть: Name=param_1, DataType=Integer, Direction=Input, defaultValue=GreyedOut / Disabled, LinkedToReportParameter=rp_currentProject .
Итак, я загружаю один и тот же шаблон отчета в несколько проектов и на вкладке Отчет> Параметры в SCTM меняю значение параметра CurrentProject на правильный идентификатор проекта. Этот идентификатор передается в отчет, и отображается правильная информация.
Кстати, я также пробовал этот формат, но получал ошибки конфликтующего типа:
WHERE TPN.PROJECTID_FK = ${currentProject|${$PROJECTID}|ProjectId}
Я также пытался использовать DECLARE / SET в SQL, чтобы установить переданное значение в переменную, но я получал сообщение об ошибке, в котором указывалось, что оператор SQL недействителен, поскольку он больше не доступен только для чтения.
Надеюсь, это поможет всем, у кого такая же проблема!