2011-10-11 41 views
1

我们使用Eclipse(Galileo)为SilkCentral Test Manager(版本11)创建一些自定义BIRT报告(版本2.5)。在SCTM中创建报告时,我们必须指定要用于报告的SQL查询。我们还必须在Eclipse中设计BIRT报告时指定SQL查询。如何在SilkCentral测试管理器中获取自定义BIRT报告以提取当前选定的项目?

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

WHERE TPN.PROJECTID_FK = ${$PROJECTID} 

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

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

然后我去了报告,标签和相关的自定义报告并显示报告正确地证明它正在使用来自BIRT的数据源/数据集而不是SCTM中提供的SQL。

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

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

    WHERE TPN.PROJECTID_FK = 34

  • 我已尝试设置它作为一个参数(名称=专案编号,数据类型=整数,DisplayType = Text Box,DefaultValue = 34)。

    WHERE TPN.PROJECTID_FK =?

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

  • 我试图将其设置为一个动态参数(名称=专案编号,数据类型=整数,显示类型=列表框,数据集=专案编号,SelectValueColumn = ProjectID_pk,SelectDisplayText =项目名,默认值= 36)

    这也拉动报告运行时的默认值。

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

任何建议/解决方案?

回答

1

这里是我从Borland网站想出了使用和例如,从BirtReports.doc解决方案:

在SCTM,我编辑从

WHERE TPN.PROJECTID_FK = ${$PROJECTID} 

的SQL查询来

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

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

我然后编辑BIRT报表的专案编号参数有以下值:名称= rp_currentProject,数据类型=整数,显示类型=文本框,默认值=空/空

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

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

顺便说一句,我也尝试过这种形式,但我是越来越有冲突的类型错误:

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

我也尝试使用在SQL设置传递的值给一个变量DECLARE/SET,但我得到了一个错误,指出SQL语句无效,因为它不再是只读的。

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

相关问题