我们正在使用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)
这也会在报告运行时拉出默认值。
默认值是必填字段,因此我不知道如何使其正常工作。
有任何建议/解决方案吗?
答案 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语句无效,因为它不再是只读的。
希望这有助于任何遇到同样问题的人!