如何在SilkCentral Test Manager中获取自定义BIRT报告以拉出当前选定的项目?

时间:2011-10-11 16:57:31

标签: birt

我们正在使用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 个答案:

答案 0 :(得分:1)

以下是我在Borland网站上使用BirtReports.doc时使用的示例解决方案:

在SCTM中,我从

编辑了SQL查询
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 。< / p>

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

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

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

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

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

希望这有助于任何遇到同样问题的人!