新增form步骤

打开模板TEMPLATE,将其改成自己所要的名称,删除Data Blacks中的BLOCKNAME,DETAILBLOCK,删除Canvases中的BLOCKNAME,删除Windows中的BLOCKNAME,新增自己的Windows,Canvases,DateBlacks,在form级别的PRE-FORM中将Blockname改成自己新增的window,若区分ORG,则将FND_ORG.CHOOSE_ORG;加入BLOCK的上一行,在Program_unit中打开APP_CUSTOM,修改其中的为自己的window,在triggers的when_new_item_instance中加入app_window.set_title('',:parameter.org_code),将org加入form的title.

1.在Form的title上加上Org_code

在Form级的WHEN-NEW-FORM-INSTANCE这个trigger中加入app_window.set_title('QUERY_FIND',:parameter.org_code);即可。

2.查看弹性栏位数据来源的路径:system administrator-->application-->flexfield-->descriptive-->segment

3.初始化view

begin

dbms_application_info.set_client_info(188);

end;

对需要user_id才能访问的view,需要先初始化一个合法的user_id进去

begin

fnd_global.apps_initialize(26872,56536,401);

end;

4.常用代码

fnd_message.debug('show message'); --show出的提示窗口

raise form_trigger_failure;  --配合show message使用,中断Form的执行

在Form open/close的时候对界面的设定

例:在close_window下写入,来控制多window的Form在关闭子窗口时切回到那个block上去

if (wnd = 'QUERY_FIND') then         --当query_find这个window关闭的时候

app_window.close_first_window;     --关闭第一个window,即为关闭这个window

elsif (wnd = 'APPROVER_UPDATE') then  --当approve_update这个window关闭时

go_block('QUERY_FIND');             --go_block到query_find这个block上去

end if;

在open_window下写入以下代码,来控制新window打开的方式

if (wnd = 'UPDATE_USER') then   --当window  UPDATE_USER被打开时

APP_WINDOW.SET_WINDOW_POSITION('UPDATE_USER', 'CASCADE', 'APPROVER_UPDATE'); --设定UPDATE_USER这个window在APPROVER_UPDATE这个window的左上角稍偏下点,具体详见下面的介绍

SET_WINDOW_PROPERTY('UPDATE_USER', VISIBLE, PROPERTY_TRUE);

GO_BLOCK('UPDATE_USER');   --指定要显示的block

elsif (wnd = 'ACT') then

APP_WINDOW.SET_WINDOW_POSITION('ACT', 'CASCADE', 'APPROVER_UPDATE');

SET_WINDOW_PROPERTY('ACT', VISIBLE, PROPERTY_TRUE);

GO_BLOCK('ACT');

end if;

app_window.set_window_position详解

procedure APP_WINDOW.SET_WINDOW_POSITION(

child_window varchar2,

style varchar2,

parent_window varchar2 default NULL);

说明:说明子窗口的显示位置

参数:child_window  指定位置的子窗体名称

style         子窗口的定位类型

parent_window 子窗口的上阶窗口名称

style:CASCADE      多个窗口从左上向右下排列

RIGHT,BELOW  子窗口在父窗口的右边或者下方,且父窗口不会覆盖子窗口

OVERLAP      子窗口和父窗口重叠,对齐父窗口左边,但向下位移0.3

CENTER       子窗口在父窗口的中间显示

FIRST_WINDOW 显示在toolbar的下方,通常是主窗口

处理查询时候,如果查询界面栏位不下条件,就表示这个栏位为空值

方法:在显示记录的block下的KEY-EXEQRY这个trigger下做判断,然后将最终的where条件赋值给这个block的default_where里面去。代码如下

declare

v_default_where varchar2(400);  --定义变量用来存放这个block的初始where条件

V_WHERE VARCHAR2(2000);         --定义变量用来存放新的where条件

begin

v_default_where:=get_block_property(:SYSTEM.CURSOR_BLOCK,DEFAULT_WHERE);--获取此block初始的where条件

V_WHERE:=v_default_where;   --将初始的where条件赋值给V_WHERE这个变量中

if v_default_where is null then   --当初始条件为空时,并条件的时候不需要加'where','and'之类

if :QUERY_FIND.EMP_CLASS_CODE is null then     --如果查询界面的那个栏位为空

V_WHERE:=V_WHERE || ' EMP_CLASS_CODE is null';  --将查询条件并上此栏位is null

else

V_WHERE:=V_WHERE || ' EMP_CLASS_CODE='||:QUERY_FIND.EMP_CLASS_CODE;--查询界面的栏位有值就用栏位等于的sql查询语句

end if;

else       --当初始条件不为空,并查询条件时需要加'and'

if :QUERY_FIND.EMP_CLASS_CODE is null then

V_WHERE:=V_WHERE || ' and EMP_CLASS_CODE is null';

else

V_WHERE:=V_WHERE || ' and EMP_CLASS_CODE='||:QUERY_FIND.EMP_CLASS_CODE;

end if;

end if;

set_block_property(:SYSTEM.CURSOR_BLOCK,DEFAULT_WHERE,V_WHERE); --将新的查询条件赋值给这个block的default_where进行查询

clear_record; /*清空,否则Form下次查询的时候会把前一次的条件带入*/

EXECUTE_QUERY;  --执行查询命令

set_block_property(:SYSTEM.CURSOR_BLOCK,DEFAULT_WHERE,v_default_where);  --将原默认的default_where值重新恢复回去

end;

取消lov的验证

set_record_property(:system.trigger_record,:system.trigger_block, STATUS,QUERY_STATUS);

常用于界面上的栏位值来源于select ....into...而此栏位又有绑定lov的情况下,防止以查询方式进入界面,没做任何操作就需要保存;或者界面上栏位在Table中只记录id,用name查找时,直接用select name into 栏位。

设置栏位属性值

app_item_property.set_property('ACT.NEW_ACT',Required,PROPERTY_TRUE);

ACT.NEW_ACT   block的栏位

Required      属性名称

PROPERTY_TRUE 属性值

调用block的trigger

APP_RECORD.FOR_ALL_RECORDS('ACT_LIST','SELECT_COUNT');

ACT_LIST       block名称

SELECT_COUNT   trigger名称

5.当一个window上有多个canvas的时候,往往会造成某个canvas不显示,解决此方法可用

show_view('canvas')命令,其中canvas为需要显示的canvas名称。

注意:当使用show_view来显示canvas时,焦点会回到之前的canvas上,这样在show  canvas_stacked的时候就不会有问题,但在show新打开的window的时候就会造成要显示的window闪一下就跑到之前的window的后面去,解决此问题可以调用

app_custom.open_window('ACT_LIST'); 来show你要的window,其中ACT_LIST为block名称。

6.弹出yes or no的询问对话框

FND_MESSAGE.SET_STRING('此核流程中已有核人T,是否⑵h除再}u?');

v_ques_no := FND_MESSAGE.QUESTION('YES','NO',NULL);

if v_ques_no=1 then

del_lines(p_head_id);

add_lines(p_head_id,p_organization_id);

else

null;

end if;

7.单击按钮使得下一个要弹出的界面值清空

go_block('');

clear_block(no_validate);

8.FND_STANDARD.SET_WHO;  插入建立者,建立日期,最后更新者,最后更新日前,最后登陆人等信息

9.清空block中资料

app_find.clear;清除当前block的值,不可用go_block('');的方式清除其他的block

app_find.clear_detail('');清除指定block的值

oracle form执行后左上角没出现oracle标记,oracle form学习笔记相关推荐

  1. oracle form执行后左上角没出现oracle标记,Oracle FORM 开发技巧(1)

    1.客户化FORM中选择库存组织 1.1. 将INVSTAND.fmb中的对象组:INV_PARAMS复制到客户化Form中 1.2. 在Form级别触发器PER-FORM触发器中添加:FND_ORG ...

  2. oracle取_后的数字,聊聊四种Oracle数字取整函数

    "四舍五入"是我们最早接触的数学概念之一.我们日常开发系统中,数字取整也是我们最常接触的一种需求样式.在财务相关系统中,四舍五入的算法有时候对系统用户造成巨大的影响. 在Oracl ...

  3. oracle 分组排序后取第一条_关于oracle中位图索引的探讨:概念、原理、优缺点...

    概述 oracle索引主要分为以下几种: 1. b-tree索引 Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名.CREATE INDEX语句时, ...

  4. oracle导入失败后怎样删除已导入数据,Oracle数据的导入、导出、插入、更新及删除总结...

    Oracle数据的导入.导出.插入.更新及删除总结 今天主要介绍一下使用Oracle的IDE:PL\SQL Developer进行数据的导入及导出操做方法. web 1. 数据导出 数据的导出比较简单 ...

  5. php macaw路由没进入路由5入口,#[Composer学习笔记]Part2:添加路由

    在Part1的基础上,为项目添加路由: 增加路由扩展:这里选择macaw,在composer中的扩展包为: codingbean/macaw 编辑composer.json文件: { "re ...

  6. oracle查看执行最慢与查询次数最多的sql语句及其执行速度很慢的问题分析

    oracle查看执行最慢与查询次数最多的sql语句 注:本文来源 于<oracle查看执行最慢与查询次数最多的sql语句> 前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率 ...

  7. 分析oracle缓慢原因,Oracle SQL执行缓慢的原因分析

    以下的文章主要介绍的是Oracle SQL执行缓慢的分析,如果你是Oracle SQL执行方面的新手,你就可以通过以下的文章对Oracle SQL执行有一个更好的了解,以下就是文章的详细内容的介绍. ...

  8. oracle一条sql运行时间很长,oracle查看执行最慢与查询次数最多的sql语句及其执行速度很慢的问题分析...

    oracle查看执行最慢与查询次数最多的sql语句 前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻 ...

  9. 《深入解析ORACLE》学习笔记(3)---ORACLE中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介绍

    [声明:本文是学习著名ORACLE DBA盖国强先生的大作<深入解析ORACLE--DBA 入门 进阶与诊断案例>的学习笔记与心得体会.在此声明,文中摘录了书中部分内容,非是出于抄袭目的, ...

最新文章

  1. 持久层是什么意思_软件项目实训及课程设计指导—如何在数据持久层中应用DAO模式...
  2. unbuntu 安装MySQL
  3. 国内最受欢迎手游国际版折戟:腾讯也很无奈
  4. shell编程之 cut命令详解
  5. python教程推荐-入门python有什么好的书籍推荐?
  6. 特殊符号大全分享给大家,直接复制粘贴就可以使用了!
  7. EasyDarwin EasyCamera支持海康摄像机接入了
  8. 【离散数学】p^q^r为什么既是合取范式又是析取范式
  9. 百度地图标注公司那家好
  10. 个人成长 | 电子设计大赛感受
  11. linux系统新增2t以上硬盘,在linux下新增一块硬盘的操作。(包含大于2T的硬盘在linux下挂载操作)...
  12. echarts(五)高级篇(多坐标轴、复杂多坐标轴)
  13. ubuntu命令行配置文件夹共享
  14. 全国计算机一级选择题免费,全国计算机一级考试选择题试题与详细答案
  15. 如何让自己像打王者荣耀一样发了疯、拼了命、失了智的学习?
  16. 换脸新潮流:BIGO风靡全球的人脸风格迁移技术
  17. 早睡、运动、读书,是性价比最高的自律
  18. 记录佩戴耳机时长App开发
  19. 微信公众号开发,扫描二维码事件推送丢失参数问题
  20. Java实现数组列项相加_数列的考查角度收集整理2[三轮总结]

热门文章

  1. 2019-12-31
  2. 获取Access表字段类型的自定义函数
  3. Python chr 函数 - Python零基础入门教程
  4. Python len函数 - Python零基础入门教程
  5. BugkuCTF-PWN题pwn6-printf超详细讲解(未提供Libc版本)
  6. 右下角文字如何写_如何提取任意小程序的小程序路径
  7. java list初始值null_关于list集合存储null的问题
  8. html设置一个随机数的抽奖,随机数的运用---抽奖
  9. html 切换主题,html切换主题实现方案
  10. python求矩形面积_关于python:创建矩形类