为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

GP_单档

2010-10-12 29页 ppt 721KB 10阅读

用户头像

is_598400

暂无简介

举报
GP_单档nullnull_aMAINMENU_u_qNP_copy_r_x_out_show_cs_show_u_show_show_rep_i_fetch_show_del_i_fetch新增修改查詢下一筆上一筆複製刪除有效無效碼单档维护流程图_set_entry做輸入的動作显示資料做重show的動作依條件值抓取Key值1.提供使用者輸入查詢條件 2.依條件組sql复制並修改Key值null屏幕表格 filename.perORACLE 4gl程序报表数据库KEYININPUTDISPLAYINSERTUPDATESELECTDEL...
GP_单档
nullnull_aMAINMENU_u_qNP_copy_r_x_out_show_cs_show_u_show_show_rep_i_fetch_show_del_i_fetch新增修改查詢下一筆上一筆複製刪除有效無效碼单档维护流程图_set_entry做輸入的動作显示資料做重show的動作依條件值抓取Key值1.提供使用者輸入查詢條件 2.依條件組sql复制並修改Key值null屏幕格 filename.perORACLE 4gl程序报表数据库KEYININPUTDISPLAYINSERTUPDATESELECTDELETE资料输入者Top.globalTop.global所有子系统下的全局变量集中至 top.global 非所有程序会用到的变量均移出 GLOBALS 如:DEFINE g_before_input_done SMALLINTROWIDROWID这个编号是由系统给定的 每次增加一笔资料列的时候,系统会自动给定一个ROWID 给该笔资料列 此ROWID 无法由我们来修改 是一个唯一值单档资料查询单档资料查询q()cs() fetch()show()查询函习重点:查询函数学习重点:查询函数中开窗查询的写法 Lock Cursor 的写法开窗查询函式开窗查询函式动态查询函式须使用:cl_create_qry( ) 使用 p_qry 工具程序查询 传入默认值、回传值 特殊自变量 特殊where条件 null如果是hard-code,务必要勾选此处最好在此处加上简单的,让别人可容易了解这支查询程序如何使用,或是范例档是哪一个由于在 Construct 时希望能查到最大数量的资料因此把 Where 条件的输入拆成 Input 时与Construct时。里面的 argX 表示由系统传入的可变自变量 同样的,此处是设定 Construct 时的 Where 条件可以使用 arg 变量 若要合并其它的 table 资料进来 Construct 时做查询时,请务必在此填入要 join 的 table name 如果要查询的值,只是 Key 值组合的一部份,必然会出现重复资料的错误 此时请勾选此处,程序会补上 Distinct 叙述 使用 cl_create_qry 說明使用 cl_create_qry 說明『INPUT』状态下: WHEN INFIELD(imz09) CALL cl_init_qry_var( )必呼叫,以清空 g_qryparam LET g_qryparam.form = "q_azf" 定义要查询的那一组 LET g_qryparam.default1 = g_imz.imz09 依照p_qry中有勾选的顺序定义回传预设 LET g_qryparam.arg1 = "D” 依照p_qry中有设定的特殊代换字符串给定 CALL cl_create_qry() RETURNING g_imz.imz09 呼叫 cl_create_qry  DISPLAY g_imz.imz09 TO imz09 NEXT FIELD imz09使用 cl_create_qry 說明使用 cl_create_qry 說明『CONSTRUCT』状态下: WHEN INFIELD(imz09) CALL cl_init_qry_var( ) LET g_qryparam.form = "q_azf" LET g_qryparam.default1 = g_imz.imz09 LET g_qryparam.arg1 = "D” LET g_qryparam.state = "c" 现在是在CONSTRUCT状态 CALL cl_create_qry() RETURNING g_qryparam.multiret 呼叫 cl_create_qry后会回传STRING DISPLAY g_qryparam.multiret TO imz09 使用STRING把值显示出去 NEXT FIELD imz09复杂查询函式复杂查询函式p_qry 中设定的查询函式只能做简单处理,有部份查询函式有特殊需求,故无法使用,故需另外撰程序代码,称为 Hard-code Hard-Code 设置 回传值超过 3 个 传入变量超过 9 个 可跨工厂查询或须夹杂权限判断 Hard-Code 设置规则Hard-Code 设置规则一律须置放于 $TOP/qry/4gl 目录下 以 $TOP/qry/qry_4gl.sample 为例制作 qry 程序 以 $TOP/qry/qry_per.sample 为例制作 qry 画面 完成后需到 p_qry:设定说明 p_perlang:设定组件多语言显示值 重新打包 qry.42x (动态连结及 qry 函式制作将另外说明)LOCK CURSOR 修改部份LOCK CURSOR 修改部份写法: LET g_forupd_sql = “SELECT * FROM azb_file “, “ WHERE ROWID = ? FOR UPDATE NOWAIT ” DECLARE i010_cl CURSOR FROM g_forupd_sql 在OPEN时,因有使用『?』 ,故需使用USING 传入自变量 并且 OPEN 及 FETCH 应将之拆开成两个段落,分别加上 STATUS 判断成功否单档资料新增单档资料新增a()i()set_entry()set_no_entry()新增函数学习重点: INPUT 基本语法的掌握 栏位Entry的设定_i( ) 基本结构_i( ) 基本结构FUNCTION _i( ) INPUT BY NAME g_xxx.xx01,g_xxx.xx02,g_xxx.xx03 BEFORE INPUT BEFORE FIELD xx01 AFTER FIELD xx01 ON ACTION CONTROLP END INPUT END FUNCTIONEntry 设定Entry 设定若有『当xxxx成立时,则xxxx可/不可输入』条件存在时 ,是以下列函数来做管控的: Set_entry( ) 设置开启条件 Set_no_entry( ) 设置关闭条件 使用cl_set_comp_entry( ) 公用函式 规格上的说明规格上的说明在设定规格时即应依程序逻辑设定影响范围列表,并在per文件下方的程序规格字段中写入条件字段 被影响字段 NOENTRY成立条件 ----------------- -------------------------------- ------------------------------------- g_sma.sma12 imz36,imz27,imz28,imz71, g_sma.sma12 MATCHES '[nN]' imz25,imz17,imz19,imz21, imz106,imz903 imz37 imz38,imz99 g_imz.imz37 != '0'锁与解锁的时机点(1)锁与解锁的时机点(1)条件:当B > 5 时,C不可输入ABCBefore Field After FieldBefore Field After FieldBefore Field After FieldDBefore Field After Field情形一:从A进B,且B=3,点C欲进,可进 情形二:从A进B,且B=6,点C欲进,不可进 情形三:B=3时,从A欲进C,可进 情形四:B=6时,从A欲进C,不可进 情形五:一进来就到D,要进CBEFORE INPUT控端被控端锁与解锁的时机点(2)锁与解锁的时机点(2)条件:当B+X > 5 时,C不可输入ABefore Field After FieldBEFORE INPUT控端被控端BBefore Field After FieldCBefore Field After FieldXBefore Field After FieldDBefore Field After Field控端情形很多,但可由单锁类推锁与解锁的时机点(3)锁与解锁的时机点(3)条件:当X > 5 时,C不可输入ABCBefore Field After FieldBefore Field After FieldBefore Field After FieldDBefore Field After Field只须写在 BEFORE INPUTBEFORE INPUT被控端g_before_input_doneg_before_input_done刚进入程序的时候,该关的就关,该开的就开 g_before_input_done此变量是用来控制现在是否为第一次进入INPUT 请于本程序的GLOBAL区定义 DEFINE g_before_input_done SMALLINT 若是刚进程序执行_set_entry( )及_set_no_entry( ) 时,则必令 g_before_input_done = FALSE 开始执行 完成第一次执行后必令 g_before_input_done = TRUE_i( ) BEFORE FIELD 程序部份_i( ) BEFORE FIELD 程序部份只在遇有set_no_entry( )时,须在属于『被控端』者的BEFORE FIELD段解锁 故属于『被控端』者的BEFORE FIELD需加上『CALL _set_entry(…)』Example: BEFORE FIELD imz37 CALL i110_set_entry(p_cmd) _i( ) AFTER FIELD 程序部份_i( ) AFTER FIELD 程序部份只在遇有set_entry( )时,须在属于『被控端』者的AFTER FIELD段上锁 故属于『被控端』者的AFTER FIELD段最后面需加上『CALL _set_no_entry(...) 』 新增时,条件字段的AFTER FIELD内应该要有所影响的输入字段的默认值,请作检查AFTER FIELD imz37 IF NOT cl_null(g_imz.imz37) THEN CALL cl_err(g_imz.imz37,'mfg1003',0) LET g_imz.imz37 = g_imz_o.imz37 DISPLAY BY NAME g_imz.imz37 NEXT FIELD imz37 END IF LET g_imz_o.imz37 = g_imz.imz37 CALL i110_set_no_entry(p_cmd)set_entry函式制作set_entry函式制作若某些输入字段被同一条件影响的话,在_set_no_entry( ) 函式中,要写成一个判断,不用每个字段判断一次 cl_set_comp_entry此公用函式可以同时让多个字段开启或关闭 cl_set_comp_entry( ps_fields, pi_entry ) ps_fields STRING 设定组件的字段名称,逗点分隔不同字段 pi_entry SMALLINT 是否可输入,TRUE:可输入;FALSE:不可输入_i( ) ON ACTION 程式部份_i( ) ON ACTION 程式部份ON ACTION CONTROLY CASE WHEN INFIELD(imz25) CALL cl_cmdrun('aooi101 ') OTHERWISE EXIT CASE END CASE ON ACTION CONTROLT CASE WHEN INFIELD(imz25) CALL cl_cmdrun("aooi102 ") OTHERWISE EXIT CASE END CASE 状态STATUS变量 SQLCA.sqlcode状态STATUS变量 SQLCA.sqlcode 判断 4gl指令的执行成功与否 STATUS = 100 没有抓到任何符合条件的资料STATUS = 0 成功的执行STATUS < 0 执行的过程中发生错误确保资料的完整性确保资料的完整性宣告transaction的起始将资料写入数据库中放弃该交易的执行 将资料回复至交易执行前的状态单档资料复制单档资料复制copy()u()nullXazb_file
/
本文档为【GP_单档】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索