1. 打开Template.fmb,并另存为一个名字(QUERYFIND.fmb)

2.从Window,Canvas,Data Block中删除BLOCKNAME,从Data Block中删除DETAILBLOCK
3.创建一个Window(DEPT_WINDOW),subclass选择WINDOW
4.Pre-Form trigger中,把DEPT_WINDOW设置为第一个显示的窗口

Program Unit:APP_CUSTOM中,设置关闭窗口的行为

5.定义一个Canvas(DEPT_CANVAS),subclass设置为CANVAS
6.通过Wizard创建Data block:DEPT,在Table中使用DEPT这个部门表

并把这个Block绑定到刚创建的canvas:DEPT_CANVAS上

把block:DEPT的subclass设置为BLOCK ,并且把block下边三个字段的subclass都设置为TEXT_ITEM.
7.加载APPSTAND.fmb

把APPSTAND.fmb下的Object Groups中的Query_Find对象组拖到Demo Form中的Object Groups中(选择Copy),

这样window,canvas,datablock有了QUERY_FIND标准对象

然后分别定义QUERY_FIND window,canvas,block的subclass。
打开QUERY_FIND block,可以看到默认会有三个button自动带入。

修改FIND,New按钮的When-Button-Pressed代码,把block:DEPT,替换进去

8.在Query_Find block中增加一个TEXT_ITEM字段,用于在查询时输入部门编码,并记得把这个字段绑定到Query_Find canvas中去。

9.然后把APPSTAND.fmb中的QUERY_FIND trigger拖拽到DEPT block level(Copy)

把原有的代码改成APP_FIND.QUERY_FIND(‘DEPT_WINDOW’, ‘QUERY_FIND’,'QUERY_FIND’);

补充:Syntax: APP_FIND.QUERY_FIND(<results block window>,<Find window>,<Find window block>);
10.接下来,在DEPT block level创建一个Pre-Query trigger,代码如下:
IF :parameter.G_query_find = 'TRUE' THEN
COPY(:QUERY_FIND.DEPT_NO,'DEPT.DEPTNO');
:parameter.G_query_find := 'FALSE';
END IF;

补充:
:parameter.G_query_find为True表示,当前查询为Query Find所触发的。
Pre-Query Syntax:
IF :parameter.G_query_find = TRUE THEN
COPY (<find Window field>,<results field>);
:parameter.G_query_find := FALSE;
END IF;
11.Form:QUERYFIND的属性中,设置First Navigation Data Block为Query_Find

QUERY_FIND block的Next Navigation Data Block设置为DEPT

12.Compile一把,看看有没有错误。没有错误的话,就可以参考 如何注册一个新的form到EBS系统 把文件注册到系统中了。
13.进入系统,查看功能


转载请注明出处:http://blog.youkuaiyun.com/pan_tian/article/details/7984694
===EOF===
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22816976/viewspace-2126048/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22816976/viewspace-2126048/
本文详细介绍如何在Oracle Forms中实现一个个性化的查询功能。步骤包括创建新的Form文件、配置窗口及画布、设置触发器等。此外,还介绍了如何利用QUERY_FIND标准对象来增强查询功能。
719

被折叠的 条评论
为什么被折叠?



