AX的Report各方法执行顺序

开发AX的报表时,如果要改动方法,要么覆写现有的报表方法,要么新增自己的方法,并通过其它方法来调用。所以,理解报表中各个方法的执行顺序,是非常重要的。

下面表述运行报表时各方法的执行顺序:init() -> dialog() -> run() -> fetch() -> send() -> print()

Init()和dialog() 在装载报表时触发。

Run()在点击对话框的OK按钮时触发。

Fetch()用来循环Query里的每一条记录,当找到记录后触发Send()方法,并把数据送到报表设计(Report Design)。注意,如果覆写了Fetch方法,我们需要手工调用Send方法来发送数据到报表。

最后触发print(),把打印内容送往打印机。

上述这些方法是报表中非常重要的方法,也是我们最常覆写的方法。而常用的客户化方法主要有:在对话框中增加控件,在打印之前处理从Query查询出来的数据,和通过执行programmable section来调整报表的输出。

上述所列方法的调用顺序仅对报表运行构架(report Runbase framework)有效的情况起作用,倘若我们要直接从AOT执行报表(而不是通过菜单)的话,调用顺序稍有改变,如下:init() -> run() -> prompt()->fetch() -> send() -> print()。这种情况下dialog()不被触发,RunBaseReportStd控制了报表对话框,当报表Runbase构架(Runbase framework)无效时才调用Prompt()方法。

发表评论