目录
目录
froms builder学习笔记总结:
一 form Builder基础知识点 (和必备知识)
1.1 form Builder的基本对象和功能
1.2 form对象之间的层次关系
1.3 常用触发器
1.3.1 表单层次的触发器
1.3.2 数据块层次的触发器
1.3.3 项层次的触发器
1.4 plsql设置主键自增方式
1.4.1 创建序列(sequence)
1.4.2 创建触发器
1.4.3 添加信息数据自增
二 新建form实现增删改查
2.1 新建表单
2.2 建立数据块
2.3 建立布局
2.4 建立其他的数据块
2.5 在程序单元里面之前写过的包和包体
2.6 编写触发器
2.7上传服务器并编译
2.8 登录sf 系统 新增DEM001-员工管理表单
2.9增删改查测试
三 遇到的问题
3.1 Stacked Canvas会突然消失的处理
3.2 打开sfcs网站报错解决方案
3.3 FRM-10043: 不能打开文件
3.4 打开菜单出现如下问题
3.5 关闭窗体出现问题
3.6 ORA-00054
Form builder: 的几个基本对象
FORM: 可以有多个Window。
Window: 只能有一个CANVAS
Canvas: 画布可以存放数据块
Block: 数据块,ITEM放在几面
Item: 最小的元素可以用来放字段按钮
表单里面放数据块,数据块里面放记录组,记录组里面存放项
WHEN-NEW-BLOCK-INSTANCE
PRE-FORM
PRE-BLOCK
WHEN-NEW-FORM-INSTANCE
WHEN-NEW-BLOCK-INSTANCE
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE
WHEN-REMOVE-RECORD
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE
WHEN-VALIDATE-RECORD
WHEN-NEW-ITEM-INSTANCE
WHEN-VALIDATE-ITEM
WHEN-MOUSE-CLICK
WHEN-MOUSE-DOUBLECLICK
--创建序列SQ_EMPTEST1
CREATE SEQUENCE SQ_EMPTEST1
increment by 1
start with 1
nomaxvalue
minvalue 1
nocycle
nocache
对emptest1表的employee_id进行自增
--创建触发器对department_id设置主键自增
create or replace trigger EMPTEST1
before insert on EMPTEST1
for each row
begin
select SQ_EMPTEST.nextval into :new.employee_id from dual;
end EMPTEST1
点击formbuilder左上角文件中选择新建,表单,新增出一个FORM。
在导航器中点击该FORM,选择数据块向导
输入表名,点刷新,显示出字段名并把字段全部选择到数据库项中。
点下一步,注意使用默认的:“请先创建数据库,然后调用布局向导”。
进入布局向导
选择新画布,类型选择内容
选择显示项,把可用项全部变成显示项
选择框架的布局样式为列表
指定框架的名称及显示记录数
完成布局向导
同样的方法建立其他两个数据块将其放到一个画布里
PACKAGE pkg_yy IS
procedure insert_test(
v_last_name in varchar,
v_salary in number,
v_job_id in varchar,
v_department_id in number
);
procedure update_test(v_employee_id in number,
v_last_name in varchar,
v_salary in number,
v_job_id in varchar,
v_department_id in number
);
END pkg_yy;
PACKAGE BODY pkg_yy IS
procedure insert_test(
v_last_name in varchar,
v_salary in number,
v_job_id in varchar,
v_department_id in number
)
is
begin
insert into emptest1(last_name,salary,job_id,department_id)
values(v_last_name,v_salary,v_job_id,v_department_id);
commit;
end insert_test;
procedure update_test(v_employee_id in number,
v_last_name in varchar,
v_salary in number,
v_job_id in varchar,
v_department_id in number
)
is
begin
update emptest1
set
last_name =v_last_name,
salary = v_salary,
job_id = v_job_id,
department_id = v_department_id
where employee_id = v_employee_id;
end update_test;
end pkg_yy;
按钮右键选择plsql编辑器找到 WHEN_BUTTON_PROCESSED
在plsql编译器中填写增删改查代码只需要调用包里的存储过程就可以啦
--增加
pkg_yy.insert_test(
v_last_name=> :ADD.last_name ,
v_salary => :ADD.salary,
v_job_id => :ADD.job_id,
v_department_id => :ADD.department_id
);
go_block('DOWN');
execute_query;
--删除
declare
begin
delete from emptest1 where employee_id= :DOWN.employee_id;
commit;
execute_query;
end;
--更新
pkg_yy.update_test(v_employee_id => :DOWN.employee_id,
v_last_name=> :DOWN.last_name,
v_salary => :DOWN.salary,
v_job_id => :DOWN.job_id,
v_department_id => :DOWN.department_id
);
execute_query;
--查询
begin
go_block('DOWN');
set_block_property('DOWN',
default_where,
'department_id = :UP.DEPARTMENT_ID');
execute_query;
end;
将文件另存为DEM001.fmb文件通过xshell和xftp上传到服务器并编译
编译成功后生成.fmx文件
在Form里面,如果排版处理的不好,会出现如下
这个Form,看起来一切正常,Stacked Canvas的水平滚动条也能拖动。
但是有一个地方,如果我们去点击Category这个Item(紧挨着Stacked Canvas的一个Item),
就会出现一个问题:右边的画布不见了
这个时候,Stacked Canvas以及上面的Item都消失了,但是我们按Tab键的时候,
其又会显示出来的。
出现此问题的原因
Canvas CANVAS_TEST_STACKED和CANVAS_TEST有重叠的部分。
对于Stacked Canvas,任何部分被不在画布内的ITEM覆盖,Stacked Canvas就会整个被遮
解决办法
调整最后一个Item和Stacked Canvas的位子,使之不出现重叠的部分。
注意:水平滚动条的每个项的左右不能有重叠部分(竖直水平条项的上下不能有重叠部分)
打开网站显示此报错信
方案一:找到IE浏览器的Internet选项按照图示设置,如果不行跳到方案二
方案二:打开控制面板找到java控制面板
选择JAVA查看JAVA版本保留一个1.7,将其他版本卸载
点击确定选择安全
将安全级别设置为低(中)
选择JAVA控制面板的高级选项
将混合代码安全验证中设置为禁止验证
问题解决成功进入网站
原因:是fmb所在的路径中包含中文
解决办法:把Form文件放到一个全英文的目录,需要注意中文的Windows,“桌面”的全路径是有 中文的
解决方案:在表单级的trigger中,修改PRE-FORM中的值。
把app_window.set_window_position('BLOCKNAME', 'FIRST_WINDOW');中的” ORDERMAIN”改为主window的名称。
解决方案:在Program Units中的APP_CUSTOM包中,把if (wnd ='
') then中的“first window”改成第一个window的名称。
报错信息:资源正忙, 但指定以 NOWAIT 方式获取资源
原因: web服务器占用了表,关掉web就行了。