培养计划中还要掌握Form的开发,本以为就是Report稍微变更了一下,或者VB关联上数据库,但是实际却不是那么回事,很是不习惯。今天陆陆续续看了一些资料,零零碎碎的记了一些笔记,还是心中没底。
1、将相关项目组织成为功能单位。无物理表示方式,两种类型——数据块(与表或者视图相关)控制块。
2、在数据块中新建Item,默认与数据库相关,可以在属性数据库设置中可以设定不相关,同时可以在一般属性中设定这个Item的类型,是文本还是按钮等。在物理属性中设定这个Item属于哪个Canvas。
3、复制对象的时候会询问是拷贝还是创建子类。
4、拷贝属性——可以将一个属性值拷贝复制到另一个属性。
Properties -〉Copy Properties
5、使用Shift+双击可以打开第二个对象的属性面板,从而可以进行两个对象的比较。以此类推,N个都行。
6、可以在运行的时候设置对象的属性。以窗口对象为例,有Set_Window_Property('my_window',VISIBLE,PROPERTY_ON)在运行时设置窗口显示。同样有很多其他的一些内建过程、SET_BLOCK_PROPERTY、SET_CANVAS_PROPERTY、SET_FORM_PROPERTY、SET_ITEM_PROPERTY、SET_LOV_PROPERTY、SET_MENU_ITEM_PROPERTY、SET_PARAMETER_ATTR、SET_RADIO_BUTTON_PROPERTY、SET_RECORD_PROPERTY、SET_RELATION_PROPERTY、SET_VIEW_PROPERTY、SET_WINDOW_PROPERTY。其中,Set_Item_Property可以设置按钮、文本等任何类型的项目。
7、四种类型模块
有五种创建数据模块的方法,表、引用游标的过程、使用记录表的过程、事务触发器、FROM因子。可以通过Data Module Wizard修改这些设置。
8、至于具体数据项的对应通过属性“数据库”和“高级数据库”来设置。
1、基于过程的块
在包头中说明的过程,在包体中一定要定义,定义必须连参数的名称也必须一至。
在使用过程(procedure)建立数据块的时候,在包中分别建立查询、插入、更新、删除、锁定5个过程。用来操作数据。其中,查询的IN OUT的参数为REF CURSOR类型,而对表单记录的DML和加锁语句,IN OUT的参数为TABLE类型。
例子:
下面就是一个包中对记录进行查询和插入。
包头:
create or replace package test_emp_maint is
-- Public type declarations
TYPE emp_t IS RECORD(
id test02.id%TYPE,
name test02.name%TYPE,
sex test02.sex%TYPE,
age test02.age%TYPE,
manager_id test02.manager_id%TYPE);
--游标类型,用于查询参数
TYPE rc_emp IS REF CURSOR
RETURN emp_t;
--表类型,用于DML以及加锁
TYPE t_emp IS TABLE OF
emp_t
INDEX BY BINARY_INTEGER;
PROCEDURE slct(
p_empqry IN OUT rc_emp);
PROCEDURE ins(
p_emprec IN OUT t_emp);
end test_emp_maint;
包体:
create or replace package body test_emp_maint is
-- SELECT DATA
PROCEDURE slct(
p_empqry IN OUT rc_emp)
IS
BEGIN
OPEN p_empqry
FOR
SELECT * from test02;
END;
-- INSERT DATA
PROCEDURE ins(
p_emprec IN OUT t_emp)
IS
--v_message VARCHAR(100);
BEGIN
--v_message := 'INSERT INTO TABLES TEST02 RECORDS';
For v_ct IN 1 .. p_emprec.count
LOOP
INSERT INTO test02(
id,
name,
sex,
age,
manager_id)
VALUES (
p_emprec( v_ct ).id,
p_emprec( v_ct ).name,
p_emprec( v_ct ).sex,
p_emprec( v_ct ).age,
p_emprec( v_ct ).manager_id
);
END LOOP;
END;
END test_emp_maint;
2、当在数据块中设定插入、更新的相关属性之后,FORM BUILDER会自动创建INSERT-PROCEDURE/UPDATE-PROCEDURE/DELETE-PROCEDURE等过程。
NOTES:在填入参数类型的时候,一定要将参数类型写完整,将包的名字写上。例如上述插入参数的类型应该为test_emp_maint.t_emp,而不是