Как получить пользовательские отчеты BIRT в SilkCentral Test Manager для извлечения текущего выбранного проекта?

#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 недействителен, поскольку он больше не доступен только для чтения.

Надеюсь, это поможет всем, у кого такая же проблема!