Oracle Developer 6i 基础应用
时间:2010-08-28
来源:互联网
材料库存处理案例讲解:
1.建表
2.Form/后台过程
3.Report
1. 建表
材料名称表
材料库存账目表
入库头表
入库明细表
出库头表
出库明细表
基本代码维护表
建表要素:
(唯一键)唯一可检索性,一个字段或多个字段组合;
历史追溯性:建立建档人、建档日期等,供历史追溯用;
合理运用主从表;
建Form
材料品名信息维护Form
材料库存账目Form
入库Form
出库Form
基本代码维护Form
材料名称Form制作
步骤:
用向导创建Data Block及Canvas、Windows;
界面处理知识点:
窗口标题显示:修改Window名字;
系统菜单及工具栏:MENU-MODULE:DEFAULT&SMARTBAR
窗口最大化:WHEN-NEW-FORM-INSTANCE:
Set_Window_Property(FORMS_MDI_WINDOW, Window_State, Maximize);
set_window_property('材料名称信息表',Window_State, Maximize);
Data block与cavas的对应设置
当前记录行加亮颜色设置:Current Record Visual Attribute Group
格式设置:Fomat Mask:Date(: yyyy-mm-dd) Number(fm999,999.00)
初始值设置:initial Value:日期 $$date$$
不可修改锁定:Enable/Update Allowed(False)
权限限制查询:Where Clause
禁止复制记录:KEY-DUPREC
编译:直接运行即生成或Ctl-T
小结:涉及内容含Data Block、Canvas、Windows、Trigers,及一些常用的Data Block和Items的属性设置方法(Property Palette)
材料库存账目Form制作
步骤:
用向导创建Data Block及Canvas、Windows;
界面处理知识点:
依上一个Form做常用处理(含数字右对齐、格式等);
增加非基表项目(品名、规格、单位);
材料品名等信息显示:
用post-change实现显示品名等项,旧版本存在弊端,管控时会导致查询停止;
创建一个取品名的通用过程(program unit),对新增及查询状态做分开处理,用mtl_no的valid事件和block的post_change事件调用取品名过程;
PROCEDURE get_mtl_name(p_status Varchar2,p_mtl_no Varchar2,p_mtl_name out Varchar2 ,p_mtl_spec out Varchar2,p_mtl_unit out Varchar2) IS
Begin
Select mtl_name,mtl_spec,mtl_unit Into p_mtl_name,p_mtl_spec,p_mtl_unit
From mtl_name
Where mtl_no=p_mtl_no;
EXCEPTION
When Others then
p_mtl_name:='';
p_mtl_spec:=null;
p_mtl_unit:=null;
if p_status<>'QUERY' Then
message('没有该料号或取品名资料出错,请核对');
Raise Form_Trigger_Failure;
end if;
END;
材料库存账目Form制作
Alert使用:
创建一个Alert,设定确定、取消按钮,设置其Title;
在指定Data Block增加新增Trigger:Key-delrecProperties中设置各字段与界面字段的绑定关系;
Set_Alert_Property('Alert_yn', alert_message_text,'确定删除?');
If Show_Alert('alert_yn')=Alert_Button1 Then
delete_record;
End if;
弹出选择框制作及引用
新增Record Groups
Select mtl_no,mtl_name,mtl_spec,mtl_unit from mtl_nameorder by mtl_no
新增Lovs,将其Record Groups属性设置成上述Record Group;并在Column Maping Properties中设置各字段与界面字段的绑定关系;
在对应item增加Trigger:When-mouse-doubleclick:
DECLARE
b_value BOOLEAN;
BEGIN
b_value := Show_Lov('lov_mtl');
If Not b_value Then
Message('没有选中值');
End If;
END;
下拉框制作
新增Record Groups
Select mtl_no,mtl_name,mtl_spec,mtl_unit from mtl_nameorder by mtl_no
增加Trigger:When-New-Form-Instance:
Declare
v_group Pls_integer;
Begin
v_group:=Populate_group('RECORD_TYPE');
Populate_list('MTL_ACC.MTL_TYPE','RECORD_TYPE');
End;
材料库存账目Form制作
汇总字段:
Data Block的Query All Records必须设置的Query All Records必须设置成Yes;
颜色可例外设置,不继承当前记录颜色;
遍历Data Block导出文本:
新增非数据块Data Block,新增数据导出按钮;
新增Trigger:When-Botton-Pressed;
Declare
file_name Varchar2(40):='C:\mtl.txt';
out_file Text_io.file_type;
Begin
--Work_p;
out_file:=text_io.fopen(file_name,'W');
Text_io.put(out_file,'料号'||Chr(9)||'品名'||Chr(9)||'规格'||Chr(9)||'单位'||Chr(9)||'库存'||Chr(10));
GO_BLOCK('MTL_ACC');
FIRST_RECORD;
LOOP
Text_io.put(out_file,:mtl_acc.mtl_no||Chr(9));
…..
Text_io.put(out_file,:mtl_acc.stock_qty||Chr(10));
Exit when :System.Last_Record='TRUE';
next_record;
END LOOP;
Text_io.fclose(out_file);
Message('成功导出,文件目录:'||file_name);
:system.message_level:=0;
Exception
When others then
Text_io.fclose(out_file);
Message('出错,请检查文件'||file_name||'是否处于打开状态,如果打开了请先关闭后再试.');
End;
材料库存账目Form制作
Form参数Parameters:
引用基础代码维护Form,设置Form参数,增加Fomr Parameters:p_group_desc
设置指定Data Block的查询条件以便观察Parameters传递情况
group_desc=Nvl(:parameter. p_group_desc,group_desc)
结合group_desc的Initial Value(:p_group_desc)及Trigger
re-Form设置当p_group_desc非空时锁定权限设置,为空时:不锁定随意设置(授权管理人员)
If :parameter.p_group_desc Is Null Then
Set_Item_Property('mtl_code_info.group_desc',Enabled,Property_True);
Else
Set_Item_Property('mtl_code_info.group_desc',Enabled,Property_False);
End If;
在材料库存账目窗口加一个按钮,When-Botton-Pressed (顺便介绍regedit/path)
Declare
p paramlist;
BEGIN
p := CREATE_PARAMETER_LIST('P');
ADD_PARAMETER(p,' p_group_desc ',TEXT_PARAMETER,'料号大类');
CALL_FORM('f_code',HIDE,DO_REPLACE,NO_QUERY_ONLY,p);
DESTROY_PARAMETER_LIST('P');
END;
Botton图标设置
Iconic:yes
Icon Filename:icon文件名
Tooltip:提示信息
引用icon图库路径设置:regedit/oracle/ui_icon
总结:学习使用读取外围表信息作为非基表显示项;学习汇总字段应用、学习提示确认信息框、选择输入窗、下拉框、Form参数、图标按钮等使用,涉及Alert,lovs,Record Group等,同时介绍遍历数据块导出文本文件等常用功能语法.
材料入库Form制作
步骤:
用向导创建主入库从表;
删除关联关系及相关triggers,改块名为head/detail,介绍手动建relation的方法,注意Prevent Masterless Operations 的使用;
改head.slip_type为下拉框,依前面介绍改window名、窗口最大化、日期/数值格式,初始值、当前记录另色显示等;
显示品名和规格等和材料库存表类似,故做一个后台通用取品名过程,不需要每个Form定义
CREATE OR REPLACE PROCEDURE get_mtl_name(
p_status Varchar2,
p_mtl_no Varchar2,
p_mtl_name out Varchar2,
p_mtl_spec out Varchar2,
p_mtl_unit out Varchar2,
p_msg out Varchar2) IS
Begin
Select mtl_name,mtl_spec,mtl_unit Into p_mtl_name,p_mtl_spec,p_mtl_unit From mtl_name
Where mtl_no=p_mtl_no;
EXCEPTION
When Others then
p_mtl_name:=null;
p_mtl_spec:=null;
p_mtl_unit:=null;
If p_status<>'QUERY' Then
p_msg:='没有该料号或取品名资料出错,请核对';
End If;
END;
/
总结:学习应用主从表关联关系;学习创建/调用后台过程函数。
材料出库Form制作
步骤:
拷贝入库Form作为模板;
更改window名,更改数据块与后台表关联,更改入库类型等描述字眼为出库,更改入库类型Record Group为出库类型等即完成出库Form制作;
总结:学习拷贝方式制作Form.
库存处理后台控制程序
CREATE OR REPLACE PROCEDURE MTL_STOCK_P1 (
p_slip_type Varchar2, --单据类型(IN/OUT)
p_op Varchar2, --操作类型(Insert/Delete)
p_mtl_no Varchar2,
p_qty Number) Is
v_type Number;
v_op Number;
v_qty Number;
v_exp01 Exception;
Begin
If Nvl(p_qty,0)=0 Then
Return;
End If;
If p_slip_type='IN' Then --IN (入库) OUT (出库)
v_type:=1;
Else
v_type:=-1;
End If;
If p_op='I' Then --I (Insert) D (Delete)
v_op:=1;
Else
v_op:=-1;
End If;
If v_type*v_op=-1 Then --扣库存,先检查库存量是否够
Select Nvl(Sum(stock_qty),0) Into v_qty From mtl_acc
Where mtl_no=p_mtl_no;
If v_qty<=p_qty Then
Raise v_exp01;
End If;
End If;
Update mtl_acc
Set stock_qty=Nvl(stock_qty,0)+(v_type*v_op)*p_qty
Where mtl_no=p_mtl_no;
库存处理后台控制程序
建立入库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_IN_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_IN_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='IN';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
/
建立出库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_OUT_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_OUT_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='OUT';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
验证库存处理结果
建立入库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_IN_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_IN_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='IN';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
/
建立出库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_OUT_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_OUT_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='OUT';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
验证库存处理结果
建立入库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_IN_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_IN_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='IN';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
/
建立出库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_OUT_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_OUT_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='OUT';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
验证库存处理结果
库存处理后台控制程序
总结:
学习分析总结数据逻辑关系,编写通用处理程序;
学习使用表触发子
Report 常用技巧
工具栏Data Model、Layout Model、Parameter Form、Live Previewer切换使用;
菜单栏Window下Object Navigator和各编辑页面之间的切换使用;
菜单栏Tools下Parameter Form Builder 使用
对象嵌套关系;
Layout Model
Select Parent Frame使用;
Confine Model使用;
Snap to Grid
Data Model
View/Tool Palette使用;
快捷创建Group;
Formula Column;
Summary Column;
System Parameters:
orientation:Landscape(横向)/Portrait(纵向)
Copies
User Parameters
直接新增或通过sql自动创建
1.建表
2.Form/后台过程
3.Report
1. 建表
材料名称表
材料库存账目表
入库头表
入库明细表
出库头表
出库明细表
基本代码维护表
建表要素:
(唯一键)唯一可检索性,一个字段或多个字段组合;
历史追溯性:建立建档人、建档日期等,供历史追溯用;
合理运用主从表;
建Form
材料品名信息维护Form
材料库存账目Form
入库Form
出库Form
基本代码维护Form
材料名称Form制作
步骤:
用向导创建Data Block及Canvas、Windows;
界面处理知识点:
窗口标题显示:修改Window名字;
系统菜单及工具栏:MENU-MODULE:DEFAULT&SMARTBAR
窗口最大化:WHEN-NEW-FORM-INSTANCE:
Set_Window_Property(FORMS_MDI_WINDOW, Window_State, Maximize);
set_window_property('材料名称信息表',Window_State, Maximize);
Data block与cavas的对应设置
当前记录行加亮颜色设置:Current Record Visual Attribute Group
格式设置:Fomat Mask:Date(: yyyy-mm-dd) Number(fm999,999.00)
初始值设置:initial Value:日期 $$date$$
不可修改锁定:Enable/Update Allowed(False)
权限限制查询:Where Clause
禁止复制记录:KEY-DUPREC
编译:直接运行即生成或Ctl-T
小结:涉及内容含Data Block、Canvas、Windows、Trigers,及一些常用的Data Block和Items的属性设置方法(Property Palette)
材料库存账目Form制作
步骤:
用向导创建Data Block及Canvas、Windows;
界面处理知识点:
依上一个Form做常用处理(含数字右对齐、格式等);
增加非基表项目(品名、规格、单位);
材料品名等信息显示:
用post-change实现显示品名等项,旧版本存在弊端,管控时会导致查询停止;
创建一个取品名的通用过程(program unit),对新增及查询状态做分开处理,用mtl_no的valid事件和block的post_change事件调用取品名过程;
PROCEDURE get_mtl_name(p_status Varchar2,p_mtl_no Varchar2,p_mtl_name out Varchar2 ,p_mtl_spec out Varchar2,p_mtl_unit out Varchar2) IS
Begin
Select mtl_name,mtl_spec,mtl_unit Into p_mtl_name,p_mtl_spec,p_mtl_unit
From mtl_name
Where mtl_no=p_mtl_no;
EXCEPTION
When Others then
p_mtl_name:='';
p_mtl_spec:=null;
p_mtl_unit:=null;
if p_status<>'QUERY' Then
message('没有该料号或取品名资料出错,请核对');
Raise Form_Trigger_Failure;
end if;
END;
材料库存账目Form制作
Alert使用:
创建一个Alert,设定确定、取消按钮,设置其Title;
在指定Data Block增加新增Trigger:Key-delrecProperties中设置各字段与界面字段的绑定关系;
Set_Alert_Property('Alert_yn', alert_message_text,'确定删除?');
If Show_Alert('alert_yn')=Alert_Button1 Then
delete_record;
End if;
弹出选择框制作及引用
新增Record Groups
Select mtl_no,mtl_name,mtl_spec,mtl_unit from mtl_nameorder by mtl_no
新增Lovs,将其Record Groups属性设置成上述Record Group;并在Column Maping Properties中设置各字段与界面字段的绑定关系;
在对应item增加Trigger:When-mouse-doubleclick:
DECLARE
b_value BOOLEAN;
BEGIN
b_value := Show_Lov('lov_mtl');
If Not b_value Then
Message('没有选中值');
End If;
END;
下拉框制作
新增Record Groups
Select mtl_no,mtl_name,mtl_spec,mtl_unit from mtl_nameorder by mtl_no
增加Trigger:When-New-Form-Instance:
Declare
v_group Pls_integer;
Begin
v_group:=Populate_group('RECORD_TYPE');
Populate_list('MTL_ACC.MTL_TYPE','RECORD_TYPE');
End;
材料库存账目Form制作
汇总字段:
Data Block的Query All Records必须设置的Query All Records必须设置成Yes;
颜色可例外设置,不继承当前记录颜色;
遍历Data Block导出文本:
新增非数据块Data Block,新增数据导出按钮;
新增Trigger:When-Botton-Pressed;
Declare
file_name Varchar2(40):='C:\mtl.txt';
out_file Text_io.file_type;
Begin
--Work_p;
out_file:=text_io.fopen(file_name,'W');
Text_io.put(out_file,'料号'||Chr(9)||'品名'||Chr(9)||'规格'||Chr(9)||'单位'||Chr(9)||'库存'||Chr(10));
GO_BLOCK('MTL_ACC');
FIRST_RECORD;
LOOP
Text_io.put(out_file,:mtl_acc.mtl_no||Chr(9));
…..
Text_io.put(out_file,:mtl_acc.stock_qty||Chr(10));
Exit when :System.Last_Record='TRUE';
next_record;
END LOOP;
Text_io.fclose(out_file);
Message('成功导出,文件目录:'||file_name);
:system.message_level:=0;
Exception
When others then
Text_io.fclose(out_file);
Message('出错,请检查文件'||file_name||'是否处于打开状态,如果打开了请先关闭后再试.');
End;
材料库存账目Form制作
Form参数Parameters:
引用基础代码维护Form,设置Form参数,增加Fomr Parameters:p_group_desc
设置指定Data Block的查询条件以便观察Parameters传递情况
group_desc=Nvl(:parameter. p_group_desc,group_desc)
结合group_desc的Initial Value(:p_group_desc)及Trigger

If :parameter.p_group_desc Is Null Then
Set_Item_Property('mtl_code_info.group_desc',Enabled,Property_True);
Else
Set_Item_Property('mtl_code_info.group_desc',Enabled,Property_False);
End If;
在材料库存账目窗口加一个按钮,When-Botton-Pressed (顺便介绍regedit/path)
Declare
p paramlist;
BEGIN
p := CREATE_PARAMETER_LIST('P');
ADD_PARAMETER(p,' p_group_desc ',TEXT_PARAMETER,'料号大类');
CALL_FORM('f_code',HIDE,DO_REPLACE,NO_QUERY_ONLY,p);
DESTROY_PARAMETER_LIST('P');
END;
Botton图标设置
Iconic:yes
Icon Filename:icon文件名
Tooltip:提示信息
引用icon图库路径设置:regedit/oracle/ui_icon
总结:学习使用读取外围表信息作为非基表显示项;学习汇总字段应用、学习提示确认信息框、选择输入窗、下拉框、Form参数、图标按钮等使用,涉及Alert,lovs,Record Group等,同时介绍遍历数据块导出文本文件等常用功能语法.
材料入库Form制作
步骤:
用向导创建主入库从表;
删除关联关系及相关triggers,改块名为head/detail,介绍手动建relation的方法,注意Prevent Masterless Operations 的使用;
改head.slip_type为下拉框,依前面介绍改window名、窗口最大化、日期/数值格式,初始值、当前记录另色显示等;
显示品名和规格等和材料库存表类似,故做一个后台通用取品名过程,不需要每个Form定义
CREATE OR REPLACE PROCEDURE get_mtl_name(
p_status Varchar2,
p_mtl_no Varchar2,
p_mtl_name out Varchar2,
p_mtl_spec out Varchar2,
p_mtl_unit out Varchar2,
p_msg out Varchar2) IS
Begin
Select mtl_name,mtl_spec,mtl_unit Into p_mtl_name,p_mtl_spec,p_mtl_unit From mtl_name
Where mtl_no=p_mtl_no;
EXCEPTION
When Others then
p_mtl_name:=null;
p_mtl_spec:=null;
p_mtl_unit:=null;
If p_status<>'QUERY' Then
p_msg:='没有该料号或取品名资料出错,请核对';
End If;
END;
/
总结:学习应用主从表关联关系;学习创建/调用后台过程函数。
材料出库Form制作
步骤:
拷贝入库Form作为模板;
更改window名,更改数据块与后台表关联,更改入库类型等描述字眼为出库,更改入库类型Record Group为出库类型等即完成出库Form制作;
总结:学习拷贝方式制作Form.
库存处理后台控制程序
CREATE OR REPLACE PROCEDURE MTL_STOCK_P1 (
p_slip_type Varchar2, --单据类型(IN/OUT)
p_op Varchar2, --操作类型(Insert/Delete)
p_mtl_no Varchar2,
p_qty Number) Is
v_type Number;
v_op Number;
v_qty Number;
v_exp01 Exception;
Begin
If Nvl(p_qty,0)=0 Then
Return;
End If;
If p_slip_type='IN' Then --IN (入库) OUT (出库)
v_type:=1;
Else
v_type:=-1;
End If;
If p_op='I' Then --I (Insert) D (Delete)
v_op:=1;
Else
v_op:=-1;
End If;
If v_type*v_op=-1 Then --扣库存,先检查库存量是否够
Select Nvl(Sum(stock_qty),0) Into v_qty From mtl_acc
Where mtl_no=p_mtl_no;
If v_qty<=p_qty Then
Raise v_exp01;
End If;
End If;
Update mtl_acc
Set stock_qty=Nvl(stock_qty,0)+(v_type*v_op)*p_qty
Where mtl_no=p_mtl_no;
库存处理后台控制程序
建立入库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_IN_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_IN_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='IN';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
/
建立出库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_OUT_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_OUT_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='OUT';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
验证库存处理结果
建立入库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_IN_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_IN_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='IN';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
/
建立出库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_OUT_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_OUT_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='OUT';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
验证库存处理结果
建立入库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_IN_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_IN_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='IN';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
/
建立出库明细表触发子:
CREATE OR REPLACE TRIGGER T_MTL_OUT_DETAIL_ALL BEFORE INSERT OR DELETE
OR UPDATE OF "MTL_NO", "QTY" ON "MTL_OUT_DETAIL"
FOR EACH ROW Declare
v_op Varchar2(1);
v_type Varchar2(3):='OUT';
Begin
If Updating Or Deleting Then
v_op:='D';
MTL_STOCK_P1(v_type,v_op,:Old.mtl_no,:Old.qty);
End If;
If Inserting Or Updating Then
v_op:='I';
MTL_STOCK_P1(v_type,v_op,:New.mtl_no,:New.qty);
End If;
End;
验证库存处理结果
库存处理后台控制程序
总结:
学习分析总结数据逻辑关系,编写通用处理程序;
学习使用表触发子
Report 常用技巧
工具栏Data Model、Layout Model、Parameter Form、Live Previewer切换使用;
菜单栏Window下Object Navigator和各编辑页面之间的切换使用;
菜单栏Tools下Parameter Form Builder 使用
对象嵌套关系;
Layout Model
Select Parent Frame使用;
Confine Model使用;
Snap to Grid
Data Model
View/Tool Palette使用;
快捷创建Group;
Formula Column;
Summary Column;
System Parameters:
orientation:Landscape(横向)/Portrait(纵向)
Copies
User Parameters
直接新增或通过sql自动创建
作者: cyl_it168 发布时间: 2010-08-28
支持一下。没有用过这个工具。
作者: renxiao2003 发布时间: 2010-08-29
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28