Reprot中的五个Trigger说明
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说明的更多相关文章
- Odoo中的五种Action详解
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826232.html Odoo中的五种action都是继承自ir.actions.actions模型实现的 ...
- 探究JavaScript中的五种事件处理程序
探究JavaScript中的五种事件处理程序 我们知道JavaScript与HTML之间的交互是通过事件实现的.事件最早是在IE3和Netscape Navigator 2中出现的,当时是作为分担服务 ...
- Oracle--数据库中的五种约束
数据库中的五种约束 数据库中的五种约束及其添加方法 五大约束 1.--主键约束(Primay Key Coustraint) 唯一性,非空性 2.--唯一约束 (Unique Counstraint ...
- XML中的五个保留字符及实体引用
字符名称 字符 实体引用 和 & & 大于号 > > 小于号 < < 单引号 ‘ ' 双引号 “ " 在XML文档中,构成元素内 ...
- 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 ...
- ADO.NET中的五大内置对象
ADO.NET中的五大内置对象 学习链接:https://blog.csdn.net/wxr15732623310/article/details/51828677
- JS中的五种去重方法
JS中的五种去重方法 第一种方法: 第二种方法: 第三种方法: 第四种方法: 第五种方法:优化遍历数组法 思路:获取没重复的最右一值放入新数组 * 方法的实现代码相当酷炫,* 实现思路:获取没重复的 ...
- js进阶 12-13 jquery中one方法和trigger方法如何使用
js进阶 12-13 jquery中one方法和trigger方法如何使用 一.总结 一句话总结: 1.one()方法和on()方法的区别是什么? 除了one()只执行一次,其它和on()一模一样,包 ...
- Linux 中的五种 IO 模型
Linux 中的五种 IO 模型 在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一 ...
随机推荐
- marquee|各种文字滚动代码(适用公告)
marquee|各种文字滚动代码(适用公告)
- PhpStorm中配置xdebug调试环境
1. 安装xdebug 第一步: 得到本地PHP配置信息 在终端中运行: php -i > outputphp.txt 然后将得到的txt文件中的信息拷贝并复制到http://xdebug.or ...
- Error:Execution failed for task ':app:transformClassesWithInstantRunForDebug'. > java.lang.ClassNotFoundException: io.realm.RealmObject
这问题错误是在运行时出现的,A-Jiang大神有说明解决方法,大神网址:https://github.com/AndroidJiang/StockChart 如果是as2.0+,可能会出现instan ...
- MongoDB学习笔记四:索引
索引就是用来加速查询的.创建数据库索引就像确定如何组织书的索引一样.但是你的优势是知道今后做何种查询,以及哪些内容需要快速查找.比如:所有的查询都包括"date"键,那么很可能(至 ...
- 《统计推断(Statistical Inference)》读书笔记——第2章 变换与期望
第二章引入了两个重要问题,随机变量的期望和随机变量的变换.期望又引申出“矩”的概念,矩是统计学理论分析的一个重要关键词,而随机变量的变换是研究复杂统计现象的重要工具.下面是这一章的思维导图
- .NET Core On Mac 第一步,配置环境
话说.NET Core出来这么久了,也没搞搞,实在是羞愧难当啊.既然选择了开始那就不能半途而废啊..NET 跨平台了,那我就用Mac试试吧. 安装步骤一:安装Homebrew 其中会遇到权限不够的问题 ...
- PL/0语言编译器的设计与实现
一.设计任务 1.1程序实现要求 PL/0语言可以看成PASCAL语言的子集,它的编译程序是一个编译解释执行系统.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机无关. PL/0的编译程序和 ...
- 利用freemarker 静态化网页
1.介绍-FreeMarker是什么 模板引擎:一种基于模板的.用来生成输出文本的通用工具 基于Java的开发包和类库 2.介绍-FreeMarker能做什么 MVC框架中的View层组件 Html页 ...
- [转]Dll注入经典方法完整版
Pnig0s1992:算是复习了,最经典的教科书式的Dll注入. 总结一下基本的注入过程,分注入和卸载 注入Dll: 1,OpenProcess获得要注入进程的句柄 2,VirtualAllocEx在 ...
- LeetCode "Russian Doll Envelopes"
An intuitive DP - should be 'medium'. class Solution { public: int maxEnvelopes(vector<pair<in ...