如何在 SilkCentral 测试管理器中获取自定义 BIRT 报告以拉取当前选定的项目?

软件测试 工具
2022-02-07 20:24:28

我在StackOverflow上发布了这个问题,但没有得到任何答案,所以在这里重新发布。

我们正在使用 Eclipse (Galileo) 为 SilkCentral Test Manager(版本 11)创建一些自定义 BIRT 报告(版本 2.5)。在 SCTM 中创建报告时,我们必须指定要用于报告的 SQL 查询。在 Eclipse 中设计 BIRT 报告时,我们还必须指定 SQL 查询。

我知道在 SCTM SQL 语句中我们可以根据当前设置指定要拉取的参数,例如当前选择的项目:

WHERE TPN.PROJECTID_FK = ${$PROJECTID}

我认为这会延续到与 SCTM 报告相关的 BIRT 报告,但事实并非如此。我在 SCTM 中创建了一个新报告并指定了以下查询(其中不包含将在 BIRT 报告中显示的信息):

SELECT      proj."ProjectName", proj."ProjectID_pk"
FROM        "Silk"."SCC_Projects" AS proj

然后我转到报告选项卡并关联一个自定义报告,报告正确显示,证明它使用的是来自 BIRT 的数据源/数据集,而不是 SCTM 中提供的 SQL。

我面临的问题是我希望自定义报告显示当前选择的项目,但我无法在 Eclipse 中正确指定它。我需要这个,因为我只想让一个报告模板用于多个项目,而不是为每个项目上传自定义报告。

  • 项目的硬编码值绝对不起作用:

    其中 TPN.PROJECTID_FK = 34

  • 我尝试将其设置为参数(Name=projectID,DataType=Integer,DisplayType=Text Box,DefaultValue = 34)。

    在哪里 TPN.PROJECTID_FK = ?

    运行时,报告会提取默认值,而不是当前选定的项目。

  • 我尝试将其设置为动态参数(Name=projectID,DataType=Integer,DisplayType=ListBox,DataSet=ProjectID,SelectValueColumn=ProjectID_pk,SelectDisplayText=ProjectName,DefaultValue=36)

    这也会在报告运行时提取默认值。

默认值是必填字段,所以我不知道该怎么做才能使其正常工作。

有什么建议/解决方案吗?

1个回答

这是我使用来自 Borland 站点的BirtReports.doc中的示例提出的解决方案:

在 SCTM 中,我从

WHERE TPN.PROJECTID_FK = ${$PROJECTID}

WHERE TPN.PROJECTID_FK = ${currentProject|34|ProjectId}

这将创建一个名为currentProject的参数,它将值 34 传递给参数名称rp_currentProject下的 BIRT 报告。

然后我编辑了 BIRT 报告的 projectID 参数,使其具有以下值:Name=rp_currentProject、 DataType=Integer、 DisplayType=TextBox、DefaultValue = Empty/Null

在报告的数据集中,我编辑了?参数为:Name=param_1, DataType=Integer, Direction=Input, DefaultValue=GreyedOut/Disabled, LinkedToReportParameter=rp_currentProject

因此,我将相同的报告模板上传到多个项目,并在 SCTM 的 Report > Parameters 选项卡下将 currentProject 参数的值更改为正确的项目 ID。此 ID 被传递给报告并显示正确的信息。

顺便说一句,我也尝试过这种格式,但我遇到了冲突的类型错误:

WHERE TPN.PROJECTID_FK = ${currentProject|${$PROJECTID}|ProjectId}

我还尝试在 SQL 中使用 DECLARE/SET 将传递的值设置为变量,但我收到一条错误消息,指出 SQL 语句无效,因为它不再是只读的。

希望这可以帮助任何有同样问题的人!