Report Trigger

1.1 Which report trigger to use

As a general rule, any processing that will affect the data retrieved by the report should be performed in the Before Parameter Form or After Parameter Form triggers. (These are the two report triggers that fire before anything is parsed or fetched.) Any processing that will not affect the data retrieved by the report can be performed in the other triggers.

翻译:

一般法则,任何能影响报表提取的数据的行为都要在Before Parameter Form和After Parameter Form triggers中执行,(这两个报表触发器将在任何语法分析和数据提取之前。),而其它不能够影响报表提取的数据的行为可以在其它触发器中执行。

1.         Before Report: Fires before the report is executed but after queries are parsed.

Before Report触发器在查询语句解析之后报表执行之前引发。

2.         After Report: Fires after you exit the Previewer, or after report output is sent to a specified destination, such as a file, a printer, or an Oracle Office userid. This trigger can be used to clean up any initial processing that was done, such as deleting tables. Note, however, that this trigger always fires, whether or not your report completed successfully.

After Report触发器将在退出预览器之后或者报表输出到指定的目的如:打印机、Oracle Office用户之后执行。这触发器能够用来清除任何已经完成的初始化行为,例如删除数据表(一般是临时表)。注意,无论你的报表是否能够成功运行,这个触发器总会触发。

3.         Between Pages :Fires before each page of the report is formatted, except the very first page. This trigger can be used for customized page formatting. In the Previewer, this trigger only fires the first time that you go to a page. If you subsequently return to the page, the trigger does not fire again

Between Pages触发器将在除第一页的其它每一页编排之前触发。这触发器能够用来定制报表页的编排。在预览时候,这触发器只在你转到某一页时触发。假如接着你返回到已经预览过的报表页时,触发器不会再触发。Before Parameter Form: Fires before the Runtime Parameter Form is displayed. From this trigger, you can access and change the values of parameters, PL/SQL global variables, and report-level columns. If the

1.         Runtime Parameter Form is suppressed, this trigger still fires. Consequently, you can use this trigger for validation of command line parameters.

Before Parameter Form触发器将在Runtime Parameter Form(运行时刻参数输入表框)显示之前触发。通过这触发器,你能够存取和改变参数、PL/SQl中全局变量和报表级别列的值。假如Runtime Parameter Form被终止,这触发器仍然会触发。因此,你能够用它来验证命令行参数的有效性。

2.         After Parameter Form :Fires after the Runtime Parameter Form is displayed. From this trigger, you can access parameters and check their values. This trigger can also be used to change parameter values or, if an error occurs, return to the Runtime Parameter Form. Columns from the data model are not accessible from this trigger. If the Runtime Parameter Form is suppressed, the After Parameter Form trigger still fires. Consequently, you can use this trigger for validation of command line parameters or other data.

After Parameter Form触发器将在Runtime Parameter Form(运行时刻参数输入表框)显示之后触发。通过这触发器你可以存取和核对参数的值。当错误发生时,这触发器能够改变参数的值并返回给Runtime Parameter Form。Data Model中的列对这触发器是不可见的,

假如Runtime Parameter Form被终止,这触发器仍然会触发。因此,你能够用它来验证命令行参数的有效性。

1.2 Report trigger order of execution(Trigger执行顺序)

The order of events when a report is executed is as follows:

Before Parameter Form trigger is fired.

1.         Runtime Parameter Form appears (if not suppressed).

2.         After Parameter Form trigger is fired (unless the user cancels from the Runtime Parameter Form).

3.         Report is "compiled."

4.         Queries are parsed.

5.         Before Report trigger is fired.

6.         SET TRANSACTION READONLY is executed (if specified via the READONLY argument or setting).

7.         The report is executed and the Between Pages trigger fires for each page except the last one. (Note that data can be fetched at any time while the report is being formatted.) COMMITs can occur during this time due to any of the following—user exit with DDL, SRW.DO_SQL with DDL, or if ONFAILURE=COMMIT, and the report fails.

8.         COMMIT is executed (if READONLY is specified) to end the transaction.

9.         After Report trigger is fired.

10.         COMMIT/ROLLBACK/NOACTION is executed based on what was specified via the ONSUCCESS argument or setting.

1.3 Report trigger restrictions(报表中触发器的一些约定)

1.         If you are sending your report output to the Runtime Previewer or Live Previewer,you should note that some or all of the report triggers may be fired before you see the report output. For example, suppose that you use SRW.MESSAGE to issue a message in the Between Pages trigger when a condition is met. If there are forward references in the report (e.g., a total number of pages displayed before the last page),

Report Builder may have to format ahead to compute the forward references. Hence, even though you have not yet seen a page, it may already have been formatted and the trigger fired.

例如,假如当条件符合时候,你用SRW.MESSAGE在Between Pages Trigger中发布消息。如果报表中有提前引用变量(例如,一总页数在最后页之前显示),Report Builder将事先计算这提前引用变量.因此,即使你没有看到一页报表,但这页报表已经编排了,而且触发器也触发了。

2.         In report triggers, you can use the values of report-level(报表级) columns and parameters. For example, you might need to use the value of a parameter called COUNT1 in a condition (e.g., IF :COUNT1 = 10). Note, though, that you cannot reference any page-dependent columns (i.e., a column with a Reset At of Page) or columns that rely on page-dependent columns.

注意,你不能够引用任何页级列(例如,设置为Reset At of Page的列),和依赖于页级的列。

3.         In the Before and After Parameter Form, and Before and After Report triggers, you can set the values of parameters (e.g., give them a value in an assignment statement,:COUNT1 = 15). In the Before and After Report triggers, you can also set the values of report-level, placeholder columns.

在Before and After Report triggers中,你能够给参数,报表级的占位列赋值。

4.         In the Between Pages trigger, you cannot set the values of any data model objects. Note also that the use of PL/SQL global variables to indirectly set the values of columns or parameters is not recommended. If you do this, you may get unpredictable results.

在Between Pages trigger中你不能对任何Data Model对象赋值。同样要注意用PL/SQL全局变量间接去给列或参数赋值也是不提倡的。如果你那样做的话,你可能取得意想不到的结果。

If you run a report from Report Builder Runtime (i.e., not the

1.         command line or SRW.RUN_REPORT), you should commit database changes you make in the Before Parameter Form, After Parameter Form, and Validation triggers before the report runs. When running in this way, these triggers will share the parent process’ database connection. When the report is actually executed, however, it will establish its own database connection.

2.         A lexical reference cannot be used to create additional bind variables after the After Parameter Form trigger fires. For example, suppose you have a query like the following (note that the WHERE clause is replaced by a lexical reference):

SELECT ENAME, SAL FROM EMP &where_clause

If the value of the WHERE_CLAUSE parameter contains a reference to a bind variable, you must specify the value in the After Parameter Form trigger or earlier. You would get an error if you supplied the following value for the parameter in the Before Report trigger. If you supplied this same value in the After Parameter Form trigger, the report would run.

WHERE SAL =: new_bind

如果Where表达式引用绑定变量,你必须在After Parameter Form trigger中或者更早指定它的值。假如你在Before Report trigger给参数赋下面的值,将报错。

Reprot中的五个Trigger说明的更多相关文章

  1. Odoo中的五种Action详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826232.html Odoo中的五种action都是继承自ir.actions.actions模型实现的 ...

  2. 探究JavaScript中的五种事件处理程序

    探究JavaScript中的五种事件处理程序 我们知道JavaScript与HTML之间的交互是通过事件实现的.事件最早是在IE3和Netscape Navigator 2中出现的,当时是作为分担服务 ...

  3. Oracle--数据库中的五种约束

    数据库中的五种约束 数据库中的五种约束及其添加方法 五大约束 1.--主键约束(Primay Key Coustraint) 唯一性,非空性  2.--唯一约束 (Unique Counstraint ...

  4. XML中的五个保留字符及实体引用

    字符名称 字符 实体引用 和 & & 大于号 >  > 小于号 <  < 单引号 ‘ &apos; 双引号 “ " 在XML文档中,构成元素内 ...

  5. Java中的五种单例模式实现方法

    [代码] Java中的五种单例模式实现方法   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 ...

  6. ADO.NET中的五大内置对象

    ADO.NET中的五大内置对象 学习链接:https://blog.csdn.net/wxr15732623310/article/details/51828677

  7. JS中的五种去重方法

    JS中的五种去重方法 第一种方法: 第二种方法:  第三种方法: 第四种方法: 第五种方法:优化遍历数组法 思路:获取没重复的最右一值放入新数组 * 方法的实现代码相当酷炫,* 实现思路:获取没重复的 ...

  8. js进阶 12-13 jquery中one方法和trigger方法如何使用

    js进阶 12-13 jquery中one方法和trigger方法如何使用 一.总结 一句话总结: 1.one()方法和on()方法的区别是什么? 除了one()只执行一次,其它和on()一模一样,包 ...

  9. Linux 中的五种 IO 模型

    Linux 中的五种 IO 模型 在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一 ...

随机推荐

  1. 在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件

    在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件 开源程序 浏览:29555 2013年05月02日 文章目录[隐藏] 常见的工作流程 SFTP 安装和使用方法 第一步: ...

  2. JAVA环境安装

    CATALINA_HOME  D:\apache-tomcat-7.0.52CLASSPATH  .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jarJ ...

  3. lua class(table)

    自己看吧: Base = {x = 0,y = 0} ---原型表 Base.name = "luohai"Base.age = 22Base.sex = "man&qu ...

  4. ASP.Net Session, Cookie, Cache的区别

    Session—管理用户会话状态 什么是状态管理? 指对同一页或不同页的多个请求维护状态和页信息的过程 为什么要进行状态管理? Web页是无状态的,不保存任何用户请求信息,而且到服务器的每一往返过程都 ...

  5. KVC/KVO原理详解及编程指南

    一.简介 1.KVC简介 2.KVO简介 二.KVC相关技术 1.Key和Key Path 2.点语法和KVC 3.一对多关系(To-Many)中的集合访问器方法 4.键值验证(Key-Value V ...

  6. Xcode中使用debug模式和release模式

    在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程.但是一个发布的程序,里面带有太多的NSLog输 ...

  7. 编写更好的jQuery代码的建议(share)

    留个备份! 原文链接: Mathew Carella   翻译: 伯乐在线- yanhaijing译文链接: http://blog.jobbole.com/52770/ 讨论jQuery和javas ...

  8. Erlang 102 Erlang并发编程

    笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期              变更说明 2014-11-02 A outline 2014 ...

  9. ODOO从哪里开始??OpenERP的第一根线头儿

    Windows下ODOO源码启动: python odoo-bin -w odoo -r odoo --addons-path=addons,../mymodules --db-filter=mydb ...

  10. IT 相关期刊

    码农周刊查阅地址: http://weekly.manong.io/issues/ 快乐码农查阅地址: http://www.codeceo.com/article/category/weekly