易拓程序设计TIPTOP GP 5X 单档维护程序撰写.ppt_第1页
易拓程序设计TIPTOP GP 5X 单档维护程序撰写.ppt_第2页
易拓程序设计TIPTOP GP 5X 单档维护程序撰写.ppt_第3页
易拓程序设计TIPTOP GP 5X 单档维护程序撰写.ppt_第4页
易拓程序设计TIPTOP GP 5X 单档维护程序撰写.ppt_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

tiptop gp 5x 单档维护程序撰写,讲师:王召霞,神州数码管理有限公司 tiptop事业部,课程安排,单档程序介绍 单档程序基本介绍 单档程序写法介绍 单档作业布置 查询程序与除错工具 p_qry动态查询程序 除错工具介绍(debugger) 单档练习 单档画面栏位控制 栏位的动态开启和关闭 单档练习 单档程序练习 单档程序验收,本次课程内容,单档程序基础介绍 单档程序示例讲解,单档程序基础介绍,单档程序(作业)的概念 单档程序(作业)的分类 单档程序(作业)的功能 单档程序(作业)的结构 单档程序(作业)的设计,单档程序的概念,何谓单档程序(作业) 我们把对单一数据库表进行操作的程序(作业)称为单档程序(作业)。 注意: 1、数据操作(新建、更改、删除)是对一 张表进行的操作。 2、数据的取值可能会涉及多张表。,单档程序的分类,1、标准单档,单档程序的分类,2、单档多栏,单档程序的分类,3、假双档,单档程序的功能,单档程序(作业)的用途 一般单档程序(作业)用于系统资料的设置或者是简单资料的记录。 单档程序应具备哪些功能? 1、基本编辑功能(新建、修改、删除、复制等) 2、查询功能 3、数据浏览功能 4、其他功能(有效/无效、打印、导出等),单档程序的功能,基本编辑功能 在tiptop系统中标准的编辑功能有: 1、录入-即新增一笔资料,对应的功能函数是,_a() 2、更改-即修改当前资料,对应的功能函数是,_u() 3、删除-即删除当前资料,对应的功能函数是,_r() 4、复制-即复制当前数据并新增一笔资料, 对应的功能函数是,_c() 5、有效/无效-即对当前资料切换其有效无效码, 对应的功能函数是,_x(),单档程序的功能,数据浏览功能 在tiptop系统中标准的浏览功能有: 1、第一笔-显示总笔数的第一笔数据内容 2、上一笔-显示当前笔的前一笔数据内容 3、指定笔-显示指定笔数的数据内容 4、下一笔-显示当前笔的后一笔数据内容 5、最后笔-显示总笔数的最后一笔数据内容 数据浏览的功能由函数,_fetch(),完成。,单档程序的功能,数据查询功能 在tiptop系统中标准的查询功能是: 查询-用户可在界面上输入查询条件, 系统会将用户输入的查询条件 形成where 条件的一个组成部分。 查询功能由函数_q()和_curs()/_cs()完成。,单档程序的功能,数据输出功能 在tiptop系统中标准的输出功能有: 1、打印-将当前资料按打印格式预览并打印出来。 打印功能对应的函数是:_out() 2、汇出excel-将当前资料汇出成excel格式。 汇出excel功能对应的函数是: cl_export_to_excel() 注意:所要汇出的资料类型需为record类型,即数组,单档程序的功能,其他功能 在tiptop系统中其他功能有: 1、语言-动态转换系统的语言别。 转换语言别的功能是由函数由cl_dynamic_locale()完成。 2、单身-进入单身栏位。功能函数为_b(),此功能在双档中讲解。 3、必要字段-显示当前作业的必要字段。 该功能由函数cl_show_req_fields()完成。 4、帮助-显示当前作业的帮助信息。 该功能由函数cl_show_help()完成。 5、离开-关闭作业。,单档程序的功能,自定义功能 上述功能均为tiptop系统标准功能, 每个客户都会有自己的需求, 每个企业的流程操作要求也不尽相同, 所以,用户可根据实际需要在客制作业 或 用户自定义作业中增加新功能。,单档程序的结构,问题: 对于一支程序,它的结构是怎样的?,标准单档程序的结构,cs(),q(),fetch(),查询,数据浏览,新增,修改,删除,有效/无效,复制,打印,单档多栏程序的结构,查询,单身(新增,更改,删除,复制),打印,单档程序的结构,program memo 程序注记 在程序起始前,均会对此程序的版本、目标、及编修人员和日期注记,便于追踪。 global setting 全局参数设计 包含3个部分: 1、database ds 2、globals “/config/top.global“ 3、define .,单档程序的设计,如何设计一支单档程序,明确需求,确定规格,规划数据表,确认功能,画面档设计,程序档设计,单档程序的设计,需求: 1、记录金额核准的人员 2、金额的核准要分范围 3、必须设置密码,单档程序的示例,示例程序:aooi010 签核人员资料维护作业 涉及表 :abz_file 签核人员资料档 gen_file 员工基本资料档 gem_file 部门信息资料档,单档程序的示例,表结构: create table azb_file ( azb01 varchar2(8), /*签核人员代码 */ azb02 varchar2(8), /*密码 */ azb06 number(20,6), /*金额 */ azbacti varchar2(1), /*资料有效码 */ azbuser varchar2(10), /*资料所有者 */ azbgrup varchar2(6), /*资料所有群 */ azbmodu varchar2(10), /*资料修改者 */ azbdate date /*最近修改日 */ );,单档程序的示例,表结构: create table gen_file ( gen01 varchar2(8), /*员工编号 */ gen02 varchar2(30), /*员工姓名 */ gen03 varchar2(6), /*所属部门编号 */ gen04 varchar2(40), /*职称 */ gen05 varchar2(5), /*分机 */ gen06 varchar2(60), /*e-mail */ genacti varchar2(1), /*资料有效码 */ genuser varchar2(10), /*资料所有者 */ gengrup varchar2(6), /*资料所有部门 */ genmodu varchar2(10), /*资料修改者 */ gendate date /*最近修改日 */ ); create unique index gen_01 on gen_file (gen01);,单档程序的示例,表结构: create table gem_file ( gem01 varchar2(6), /*部门编号 */ gem02 varchar2(40), /*部门名称 */ gem03 varchar2(40), /*部门全称 */ gem04 varchar2(6), /*no use */ gem05 varchar2(1), /*是否为会计部门 */ gem06 varchar2(1), /*no use */ gem07 varchar2(1), /*费用类别 */ gem08 varchar2(1), /*no use */ gemacti varchar2(1), /*资料有效码 */ gemuser varchar2(10), /*资料所有者 */ gemgrup varchar2(6), /*资料所有部门 */ gemmodu varchar2(10), /*资料修改者 */ gemdate date, /*最近修改日 */ gem09 varchar2(1), /*管理类别 1.成本中心 2.利润中心 3.其它 */ gem10 varchar2(6) /*对应成本中心 */ ); create unique index gem_01 on gem_file (gem01);,单档程序的示例,请查看教材单档部分!,第一天课程结束,谢谢大家,本次课程内容,查询程序介绍 p_qry动态程序设计 除错工具debugger介绍,p_qry动态查询程序介绍,在tiptop gp系统中,有两种查询程序: 1、hard-code 此类查询程序是由人工完成。 存在源代码档,目录是qry/4gl下 任何查询都可以用此类方式完成, 程序编写比较繁琐,对于初学者不易掌握。 2、p_qry动态查询程序 此类查询程序是由系统完成。 没有源代码档,系统直接调用配置后完成。 有一定的局限性 无需编程,容易掌握。,p_qry动态查询程序介绍,p_qry动态查询程序介绍,1.动态查询程序名称代码(.form) 2.查询视窗标题 3.本函式为hard-code函式:用于占位,防止两种查询 程序名称冲突 4.是否忽略单身营运中心设置:一旦勾选,查询仅限于用户所在db 5.本查询程序单身资料不上锁,可更改:勾选后才能更改设置资料 6.客制查询程序:若为客制程序,则须勾选。,p_qry动态查询程序介绍,1.input时的where条件:录入状态下,开窗查询的条件。 2.construct时的where条件:查询状态下,开窗查询的条件。 3.需join的table:查询时所涉及到的非查询字段的表。 4.资料会重复,需要distinct属性:增加distinct属性,去除重复资料。,p_qry动态查询程序介绍,1.资料数据库代码:设定查询资料所在数据库 2.资料表代码: 设定查询资料表 3.字段代码: 设定查询字段 4.字段宽度: 设定窗体中该栏位的宽度 5.本栏回传: 设定是否回传该字段的值 6.字段类型: 设定窗体中该栏位的画面栏位类型 7.本栏需outer: 设定该字段是否需要outer 8.串查程序代码: 可在窗体中增加相关资料的查询功能,p_qry动态查询程序介绍,参数须透过g_qryparam全局变量传递。 .form 查询程序代码 .state 状态 input/construct (i/c) .construct 是否作construct (y/n) .where 其他where条件 .pagecount 每页最大浏览笔数 .default15 开窗栏位的预设值 .arg19 查询资料的条件替换值 .multiret_index 多选资料所要回传的栏位索引值 .multiret 多选资料的回传值暂存器 .ordercons order by的顺序,p_qry动态查询程序介绍,何时采用hard-code,何时采用p_qry 1)sql比较简单则采用p_qry sql非常复杂则采用hard-code 2)default值超过5个时,只能采用hard-code 3)arg传入值超过9个时,只能采用hard-code,p_qry动态查询程序介绍,查询状态下的开窗 call cl_init_qry_var() let g_qryparam.form = “q_gen“ let g_qryparam.state = “c” /此句不可省略 let g_qryparam.default1 = g_azb.azb01 call cl_create_qry() returning g_qryparam.multiret display g_qryparam.multiret to azb01 next field azb01,p_qry动态查询程序介绍,录入状态下的开窗 call cl_init_qry_var() let g_qryparam.form = “q_gen“ let g_qryparam.state = “i” /此句可以省略 let g_qryparam.default1 = g_azb.azb01 call cl_create_qry() returning g_azb.azb01 display by name g_azb.azb01 next field azb01,p_qry动态查询程序介绍,两种状态下的比较: call cl_init_qry_var() # call cl_init_qry_var() #清空g_qryparam变数组 let g_qryparam.form = “q_gen“ # let g_qryparam.form = “q_gen“ #指定组别 let g_qryparam.state = “c“ let g_qryparam.default1 = g_azb.azb01 # let g_qryparam.default1 = g_azb.azb01 #指定取消时回传值 call cl_create_qry() returning g_qryparam.multiret # call cl_create_qry() returning g_azb.azb01 #动态查询 display g_qryparam.multiret to azb01 # display by name g_azb.azb01 #重秀 next field azb01 # next field azb01,p_qry动态查询程序介绍,传入值:,p_qry动态查询程序介绍,p_qry动态查询程序介绍,p_qry动态查询程序介绍,p_qry动态查询程序介绍,when infield(cqa09) call cl_init_qry_var() let g_qryparam.form = “q_dpb“ let g_qryparam.arg1 = “a“ let g_qryparam.default1 = g_cqal_ac.cqa09 call cl_create_qry() returning g_cqal_ac.cqa09 display g_cqal_ac.cqa09 to cqa09 next field cqa09 #,when infield(cqv04) call cl_init_qry_var() let g_qryparam.form = “q_dpb“ let g_qryparam.arg1 = “b“ let g_qryparam.default1 = g_cqvl_ac.cqv04 call cl_create_qry() returning g_cqvl_ac.cqv04 display g_cqvl_ac.cqv04 to cqv04 next field cqv04,apyt010,apyt090,p_qry动态查询程序介绍,返回值多个(录入状态),p_qry动态查询程序介绍,返回值多个(录入状态),p_qry动态查询程序介绍,返回值多个(查询状态),p_qry动态查询程序介绍,返回值多个(查询状态),p_qry动态查询程序介绍,p_qry动态查询程序介绍,when infield(cua34) call cl_init_qry_var() let g_qryparam.state = “c“ let g_qryparam.form =“q_tpa“ let g_qryparam.default1 = g_cua.cua34 let g_qryparam.default2 = g_cua.cua341 call cl_create_qry() returning g_qryparam.multiret display g_qryparam.multiret to cua34 next field cua34 when infield(cua341) call cl_init_qry_var() let g_qryparam.state = “c“ let g_qryparam.form =“q_tpa“ let g_qryparam.default1 = g_cua.cua34 let g_qryparam.default2 = g_cua.cua341 call cl_create_qry() returning g_qryparam.multiret display g_qryparam.multiret to cua34 next field cua341,when infield(cua34) call cl_init_qry_var() let g_qryparam.form =“q_tpa“ let g_qryparam.default1 = g_cua.cua34 let g_qryparam.default2 = g_cua.cua341 call cl_create_qry() returning g_cua.cua34,g_cua.cua341 display by name g_cua.cua34,g_cua.cua341 next field cua34 when infield(cua341) call cl_init_qry_var() let g_qryparam.form =“q_tpa“ let g_qryparam.default1 = g_cua.cua34 let g_qryparam.default2 = g_cua.cua341 call cl_create_qry() returning g_cua.cua34,g_cua.cua341 display by name g_cua.cua34,g_cua.cua341 next field cua341,construct:,input:,p_qry动态查询程序介绍,程序中加where条件,p_qry动态查询程序介绍,p_qry动态查询程序介绍,when infield(cua281) call cl_init_qry_var() let g_qryparam.form =“q_tpu“ let g_qryparam.default1 = g_cua.cua281 let g_qryparam.where = “ tpu01 = “,g_cua.cua28,“ call cl_create_qry() returning g_cua.cua281 display by name g_cua.cua281 next field cua281,debugger工具介绍,指令:r.d2+ 程序名(不跟后缀) 例如:r.d2+ aooi010 注意:执行该命令必须在该程序所在的4gl目录下运行,debugger工具介绍,debugger工具介绍,debugger工具介绍,查询:ctrl+f,debugger工具介绍,debugger命令框:,1、show all commands :显示所有命令语句 2、refresh :刷新 3、copy to clipboard :将debugger output中的内容复制到剪贴板 4、可用ctrl-d来开启命令框,debugger工具介绍,常用的debugger命令: p:查询变量值 例如 p g_azi01 b:快速设置断点 例如 b i010_a(),debugger工具介绍,inspect(ctrl-i)变量跟踪,1、add watch 增加跟踪变量 2、delete watch 删除跟踪变量 3、edit watches 编辑跟踪变量,第二天课程结束,谢谢大家,本次课程内容,栏位的开启与关闭 示例讲解,栏位的开启和关闭,什么是栏位的开启和关闭 当画面上某个栏位在某种情况下可以录入,或者在某种情况下不可以录入,控制栏位可否输入的状态即为栏位的开启和关闭,锁与解锁的时机点(1),条件:当b 5 时,c不可输入,a,b,c,before field after field,before field after field,before field after field,d,before field after field,情况一:从a进b,且b=3,点c欲进,可进 情况二:从a进b,且b=6,点c欲进,不可进 情况三:b=3时,从a欲进c,可进 情况四:b=6时,从a欲进c,不可进 情况五:一进来就到d,要进c,before input,控端,被控端,锁与解锁的时机点(2),条件:当b+x 5 时,c不可输入,a,before field after field,before input,控端,被控端,b,before field after field,c,before field after field,x,before field after field,d,before field after field,控端,情况很多,但可由单锁类推,锁与解锁的时机点(3),条件:当x 5 时,c不可输入,a,b,c,before

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论