BIRT:如何访问Onprepare()事件的内部表中的外部表值?

时间:2018-11-26 12:59:31

标签: birt

我有两个桌子。 我无法访问BIRT报表中内部表的 Onprepare()事件内的外部表值 row [“ Value”] 。 因此我可以使用这些值动态设置内部表列的宽度。 如何在Onprepare()事件中访问外部表的值?

没有用于列的方法。如果我把像元宽度给误差12厘米 stacktrace: org.eclipse.birt.report.engine.api.EngineException:评估脚本“ this.width =“ 12cm”;“时发生错误: 包装好的java.lang.UnsupportedOperationException:无法设置单元格宽度,请改为设置列宽。 (/ report / body / table [@ id =“ 3482”] / detail / row [@ id =“ 3485”] / cell [@ id =“ 3486”] / table [@ id =“ 98041”] / detail /行[@ id =“ 98063”] /单元格[@ id =“ 98066”] /方法[@ name =“ onCreate”]#1)

1 个答案:

答案 0 :(得分:1)

在外部表的行中,您可以将一些行值写入变量。
在内部表中,您可以访问该变量。

编辑: 您需要一个具有全局访问范围的“变量”。一种方法是在报表的initialize()脚本中初始化变量(beforeFactory()或onPrepare()也是有效选项)

def build_myobj(version):
    return Builder(version).build()

versioned_obj = build_myobj('0.0.1')

→尝试将您的innerTable脚本从onPrpare()移到onCreate()

here's a simple example report(已更新的具有动态宽度的链接示例)

在该示例中,我从外部将值a_1 = np.array([1.0, 2.0, 3.0]) a_2 = np.array([[1., 2.], [3., 4.]]) b = 2.0 np.multiply(a_1,b) # array([2., 4., 6.]) np.multiply(a_2,b) # array([[2., 4.],[6., 8.]]) 传递给内部表。 在内部表的onCreate()中,您可以使用适当的单位来合并该值,例如。 myVar1 = 0; //has global scope var myVar2 = 0; //has only local scope 1 | 2 | 3。 另外,请检查报告是否具有“固定版式”(而非“自动版式”)。

cm

edit:可以通过该内部表的onCreate()来设置内部表列的宽度而不是表本身的宽度。

in