【实习之T100开发】T100程序功能代码积累
程序功能代码
- azzq171 可查询函数说明
- adzi170 可执行SQL,查看数据库数据
- 提示报错信息(弹框)
- 年龄限制 18~60
- 审核后修改身份证
- [已审核]和[无效] 状态下无法修改
- 单号开窗需要传参数(参照表编号、程序编号)+ 开窗测试工具使用
- 开窗参数写成全局变量
- 项次自增
- 开窗选择后,点击[确定]后直接带值
- 审核相关
- [已审核]不允许直接失效,[失效]不允许直接审核
- 单身没有数据,审核会报错
- 资料异动中, 资料审核者,资料审核日期
- 已审核时隐藏未审核,失效时隐藏审核
- 数据库查询出某个值并显示在画面上
- 源码分析
- 开窗代码
目录:【实习】T100学习笔记
azzq171 可查询函数说明
adzi170 可执行SQL,查看数据库数据
提示报错信息(弹框)
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = "警告:" #错误信息的前缀
LET g_errparam.code = 'aap-00113' #错误信息代码,在常用工具->错误讯息维护作业中添加
LET g_errparam.popup = FALSE #错误信息是否需要弹框(false不用,true则有)
CALL cl_err()
NEXT FIELD CURRENT
年龄限制 18~60
cl_null()
用于判断是否为空g_oozyuc_m.oozyuc004
获取表头变量- azzi920 错误代码维护,
"coo-00666"
是我自定义的错误编号
#检查年龄必须 >=18 并且 <=60IF NOT cl_null(g_oozyuc_m.oozyuc004) THENIF g_oozyuc_m.oozyuc004 < 18 OR g_oozyuc_m.oozyuc004 > 60 THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = ""LET g_errparam.code = "coo-00666"LET g_errparam.popup = TRUE CALL cl_err()NEXT FIELD oozyuc004END IFEND IF
报错 代码段:
INITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "coo-00666" #azzi920维护错误码 LET g_errparam.popup = TRUE CALL cl_err() # NEXT FIELD oozyuc005
审核后修改身份证
不要忘记在 ui_dialog 里定义变量:
DEFINE l_success LIKE type_t.num10
在 ON ACTION modify_sfz 处添加代码:
#應用 a43 樣板自動產生(Version:4)
ON ACTION modify_sfzLET g_action_choice="modify_sfz"IF cl_auth_chk_act("modify_sfz") THEN#add-point:ON ACTION modify_sfz name="menu2.modify_sfz"#单据必须是审核状态才能执行这个功能IF g_oozyuc_m.oozyucstus = 'Y' THEN#因为修改画面上的身份证需要异动到数据表,所以需要开启事务CALL s_transaction_begin()#通过下面函数返回的l_success,判断事务是提交还是回滚CALL cooi666_modify_sfz() RETURNING l_successIF NOT l_success THENCALL s_transaction_end('N', '0') #回滚ELSE CALL s_transaction_end('Y', '0') #提交END IFELSE #报错,单据状态不是审核,不能点此按钮INITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g_errparam.code = "coo-00667"LET g_errparam.popup = TRUECALL cl_err()EXIT MENU #报错后退出MENUEND IF#END add-pointEND IF
然后去写 cooi666_modify_sfz() 函数的代码:
PRIVATE FUNCTION cooi666_modify_sfz()DEFINE l_success LIKE type_t.num10 #返回值#将返回值默认为TRUE,在下面如果有报错就默认为false,表示事务会执行回滚LET l_success = TRUE#先开启游标,找的是MAIN函数里面的for update的游标,目的是为了锁住这边资料不被其他人修改OPEN cooi666_cl USING g_enterprise,g_oozyuc_m.oozyuc00#这里是判断cooi123_cl这个游标对应得SQL语句有无报错IF STATUS THEN #若报错,走下面的报错信息,并且关闭游标,直接返回FALSEINITIALIZE g_errparam TO NULLLET g_errparam.extend = "OPEN cooi666_cl:"LET g_errparam.code = STATUSLET g_errparam.popup = TRUECALL cl_err()CLOSE cooi666_cl #关闭游标LET l_success = FALSERETURN l_success #直接返回 FALSEEND IF#通过input语法直接修改身份证号,如果不写input,不能在画面上输入字段的值DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM) INPUT BY NAME g_oozyuc_m.oozyuc005 ATTRIBUTE(WITHOUT DEFAULTS)BEFORE INPUTBEFORE FIELD oozyuc005AFTER FIELD oozyuc005 #校验带值IF NOT cl_null(g_oozyuc_m.oozyuc005) THEN#写一些其他逻辑DISPLAY BY NAME g_oozyuc_m.oozyuc005END IFON CHANGE oozyuc005ON ACTION controlp INFIELD oozyuc005 #如果是需要开窗写在下面AFTER INPUT #input输入之后,直接更新到数据库UPDATE oozyuc_t SET oozyuc005 = g_oozyuc_m.oozyuc005WHERE oozyucent = g_enterpriseAND oozyuc001 = g_oozyuc_m.oozyuc001IF SQLCA.SQLCODE THENINITIALIZE g_errparam TO NULL LET g_errparam.extend = ""LET g_errparam.code = SQLCA.SQLCODE LET g_errparam.popup = TRUECLOSE cooi666_cl CALL cl_err()LET l_success = FALSEEND IFEND INPUT #input结束ON ACTION controlfCALL cl_set_focus_form(ui.Interface.getRootNode()) RETURNING g_fld_name,g_frm_nameCALL cl_fldhelp(g_frm_name, g_fld_name, g_lang)ON ACTION controlrCALL cl_show_req_fields()ON ACTION controlsIF g_header_hidden THENCALL gfrm_curr.setElementHidden("vb_master",0)CALL gfrm_curr.setElementImage("controls","small/arr-u.png")LET g_header_hidden = 0 #visibleELSECALL gfrm_curr.setElementHidden("vb_master",1)CALL gfrm_curr.setElementImage("controls","small/arr-d.png")LET g_header_hidden = 1 #hidden END IFON ACTION acceptACCEPT DIALOGON ACTION cancel #取消LET INT_FLAG = TRUEON ACTION close #关闭,右上角的(X)ACCEPT DIALOGON ACTION exit #离开ACCEPT DIALOG#交談指令共用ACTION&include "common_action.4gl" CONTINUE DIALOG END DIALOGRETURN l_success
END FUNCTION
[已审核]和[无效] 状态下无法修改
- 有3种状态:N:未审核、X:无效、Y:已审核
cl_set_act_visible()
:用于设置功能是否显现
将代码添加在 xxx_set_act_no_visible
IF g_oozyuc_m.oozyucstus NOT MATCHES "[N]" THEN #N未审核/X无效/Y已审核CALL cl_set_act_visible("modify,delete,modify_detail", FALSE)
END IF
单号开窗需要传参数(参照表编号、程序编号)+ 开窗测试工具使用
下图中,在 adzi210开窗设计器中可以看到,单号的开窗识别码要求传2个参数,分别是 参照表编号 和 程序编号 ,需要我们在代码里添加。
- 参照表编号 在下面的【单据别建立流程】中有讲,aooi100中可以查看
- 程序编号在代码里是个全局变量,
g_prog
,本程序中即cxmt666
开窗测试工具的使用
在 adzi210开窗设计工具中,查出了对应的开窗识别码后,点击【开窗测试工具】,然后将对应的参数输入,点击右边的开窗,即可查出对应的值。
如果没有查出来,按照【单据别建立流程】检查一遍流程。
在 ON ACTION controlp INFIELD xmzyucdocno
,即点击单号开窗的位置,写代码:
#add by lzy #2021/1/27 根据当前的据点找到对应的单据别参照表号
LET l_ooef004 = ''
SELECT ooef004 INTO l_ooef004 FROM ooef_t
WHERE ooefent = g_enterprise #企业编号=当前企业编号
AND ooef001 = g_site #组织编号=据点 #給予arg
LET g_qryparam.arg1 = l_ooef004
LET g_qryparam.arg2 = g_prog #程序编号:cxmt666
注:l_ooef004
需要在前面定义变量,我们在 cxmt666_input
开头定义:
DEFINE l_ooef004 LIKE ooef_t.ooef004 #add by lzy#2021/1/27 单据别参照表号
开窗参数写成全局变量
在上面我们是用 l_
开头的局部变量的方式写的,但是有时候很多开窗要传的参数是一样的,如果每次都要重新写,那将很麻烦,不如直接改成全局变量,后需要用到都可以拿来用。
将变量声明到 MAIN 上面的全局区域:
#add-point:自定義模組變數(Module Variable) (請盡量不要在客製環境修改此段落內容, 否則將後續patch的調整需人工處理) name="global.variable"
DEFINE g_ooef004 LIKE ooef_t.ooef004 #add by lzy#2021/1/27 单据别参照表号
DEFINE g_ooef024 LIKE ooef_t.ooef024 #add by lzy#2021/1/27 供应商编号
DEFINE g_ooef019 LIKE ooef_t.ooef019 #add by lzy#2021/1/27 税区编号
#end add-point
在 xxxx_init()
的画面资料初始化区域写SQL查询:
#add-point:畫面資料初始化 name="init.init"
LET g_ooef004 = ''
LET g_ooef024 = ''
SELECT ooef004,ooef024,ooef019 INTO g_ooef004,g_ooef024,g_ooef019 FROM ooef_t
WHERE ooefent = g_enterprise #企业编号=当前企业编号
AND ooef001 = g_site #组织编号=据点
#end add-point
最后在 ON ACTION controlp INFIELD xxxxx
处给参数赋值即可。
项次自增
在 axmt500 xxxx_input
> DIALOG
> BEFORE INSERT
下的 #項次加1
处可以捞到代码:
#項次加1
SELECT MAX(xmdcseq)+1 INTO g_xmdc_d[l_ac].xmdcseq FROM xmdc_tWHERE xmdcent = g_enterprise AND xmdcdocno = g_xmda_m.xmdadocno
IF cl_null(g_xmdc_d[l_ac].xmdcseq) OR g_xmdc_d[l_ac].xmdcseq = 0 THENLET g_xmdc_d[l_ac].xmdcseq = 1
END IF
开窗选择后,点击[确定]后直接带值
这个和 AFTER FIELD
过栏位是不同的,需要写在开窗后面(ON ACTION
里)
# add by lzy 2021/2/22 点击确定后就显示参考字段(与过栏位区分)
INITIALIZE g_ref_fields TO NULL
LET g_ref_fields[1] = g_xmaguc_m.xmaguc003
CALL ap_ref_array2(g_ref_fields,"SELECT pmaal004 FROM pmaal_t WHERE pmaalent="||g_enterprise||" AND pmaal001=? AND pmaal002='"||g_dlang||"'","") RETURNING g_rtn_fields
LET g_xmaguc_m.xmaguc003_desc = '', g_rtn_fields[1] , ''
DISPLAY BY NAME g_xmaguc_m.xmaguc003_desc
审核相关
[已审核]不允许直接失效,[失效]不允许直接审核
xxx_statechange
中设置状态码变更后的操作
cl_set_act_visible
用于设置某个功能不显现
#add-point:menu前 name="statechange.before_menu"
CASE g_xmaguc_m.xmagucstus# 失效不允许审核WHEN "X"CALL cl_set_act_visible("valid",FALSE)# 已审核不允许失效WHEN "Y"CALL cl_set_act_visible("void",FALSE) #160204-00006#1--add--(E)
END CASE
单身没有数据,审核会报错
#add-point:stus修改前 name="statechange.b_update"
CASE g_xmaguc_m.xmagucstus
# 单身没有数据,不允许审核 add by lzy 2021/2/24WHEN "N"SELECT MAX(xmahucseq)+1 INTO g_xmahuc_d[l_ac].xmahucseq FROM xmahuc_tWHERE xmahucent = g_enterprise AND xmahuc001 = g_xmaguc_m.xmaguc001IF cl_null(g_xmahuc_d[l_ac].xmahucseq) OR g_xmahuc_d[l_ac].xmahucseq = 0 THENCLOSE cxmi902_clINITIALIZE g_errparam TO NULL LET g_errparam.extend = "警告:" #错误信息的前缀LET g_errparam.code = 'agl-00336' #错误信息代码,在常用工具->错误讯息维护作业中添加LET g_errparam.popup = TRUE #错误信息是否需要弹框(false不用,true则有)CALL s_transaction_end('N','0') #(ver:19)CALL cl_err()RETURNEND IF
END CASE
资料异动中, 资料审核者,资料审核日期
写在statechange
里的 #add-point:stus修改後 name="statechange.a_update"
中
主要是修改一下执行的SQL,将[资料审核者]和[资料审核日期]一起变了
已审核时隐藏未审核,失效时隐藏审核
函数 cl_set_act_visible
:用于设置功能是否显现
在xxx_statechange
里的#add-point:menu前 name="statechange.before_menu"
中:
#add-point:menu前 name="statechange.before_menu"
CASE g_xmaguc_m.xmagucstusWHEN "X"CALL cl_set_act_visible("valid",FALSE)WHEN "Y"CALL cl_set_act_visible("void",FALSE) #160204-00006#1--add--(E)
END CASE
#end add-point
数据库查询出某个值并显示在画面上
#檢查成功時後續處理
# add by lzy 2021/2/23 录入时根据客户查询最大版本+1预设
SELECT MAX(isdauc002) INTO g_isdauc_m.isdauc002FROM isdauc_tWHERE isdaucent = g_enterprise AND isdaucsite = g_siteAND isdauc001 = g_isdauc_m.isdauc001
IF (cl_null(g_isdauc_m.isdauc002)) OR (g_isdauc_m.isdauc002=0) THENLET g_isdauc_m.isdauc002 = 1 # 为空或者为0,那么置为1
ELSE# 不为空不为0,则在最大的基础上+1 LET g_isdauc_m.isdauc002 = g_isdauc_m.isdauc002 + 1
END IF
DISPLAY BY NAME g_isdauc_m.isdauc002
源码分析
开窗代码
【实习之T100开发】T100程序功能代码积累相关推荐
- APP开发流程实例讲解-儒释道网络电台八天开发全程-实现功能代码:播放控制
APP开发流程实例讲解-儒释道网络电台八天开发全程 实现功能代码:播放控制 APP开发流程实例讲解-儒释道网络电台八天开发全程 项目发起 功能和界面初步设定 在Android Studio中完成界面设 ...
- T100开发新程序步骤
前置:1,GDC开启,并登录到T100系统 2,设计器开启,并登录 开始 1,前往azzi900,注册程序号,系统将自动产生规格和源码的初始版次号(仅供签出,还不能下载) 2,前往azzi910,注册 ...
- 【实习】T100开发学习笔记
T100开发学习笔记 笔记目录 一些小技巧 实用的通用快捷键 所有全局变量(top_global.inc文件) 笔记目录 Linux 学习笔记 T100 基础架构.命名原则 Genero FGL (T ...
- 【开发教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解
开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计 本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...
- Vue.js 2.5 发布,而这个会玩的团队已经自研出用 Vue 开发小程序的框架了
在尤大微博铺垫着"将会引入一些关于 TypeScript 的改进"一周之后,代号为 Level E 的 Vue.js 2.5 带着日漫风来到了我们眼前.从 Release Note ...
- 用Vue开发小程序的框架
在尤大微博铺垫着"将会引入一些关于 TypeScript 的改进"一周之后,代号为 Level E 的 Vue.js 2.5 带着日漫风来到了我们眼前.从 Release Note ...
- 【开源教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解
开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计 本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...
- 【实习之T100开发】T100 单档程序开发(2)添加功能
T100单档程序 一.添加 性别[下拉框].入职日期 1.r.t 数据表增加字段 2.设计器更新基础数据.重新产生基础数据 3.设计器修改界面并上传 4.重新下载程序代码,修改 azzi600系统分类 ...
- 【实习之T100开发】T100 单档程序开发(1)开发流程
T100单档程序 单双档程序的 (全新) 开发流程 adzi140 数据表设计器介绍 r.t 建表 建表 (全新) 建表 (修改标准表) T100设计器 画面生成器 adzp168 单档 (全新) 完 ...
最新文章
- ant 获取当前url的参数
- 以太网迎新增长 专家眼中的车载以太网及AVB技术
- 大数据、云计算、AI大牛都在这里了,就等你来捞干货
- Vue数据更新数据不渲染问题 - 资源篇
- MySQL怎么导出用户权限表_导出MySQL用户权限_MySQL
- vs.net 2005中引用webservice的简单方法
- 使用Data URI Scheme优雅的实现前端导出csv
- mysql实现俩个属性加减运算_1.3 算数运算符
- SharePoint 2010 获取列表全部定义方法
- Nginx 多重判断
- 查看redis安装目录
- 【LA 2572】Viva Confetti(圆与圆弧覆盖+精度问题)
- 小米随身wifi的linux驱动,小米随身wifi驱动
- 记一次阿里云RDS MYSQL 数据恢复的经历
- 基于JAVA教务排课系统计算机毕业设计源码+数据库+lw文档+系统+部署
- IDEA 学生注册成功并使用一段时间,还要激活,并且提示No suitable licenses associated with account
- 华为认证云服务架构专家正式发布!
- 什么是restful?说说你对restful的理解
- 系统卡顿有服务器硬件的原因,服务器出现卡顿,一般是这个3个原因!
- 制作你自己的yolov5数据集并进行训练