程序功能代码

  • 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程序功能代码积累相关推荐

  1. APP开发流程实例讲解-儒释道网络电台八天开发全程-实现功能代码:播放控制

    APP开发流程实例讲解-儒释道网络电台八天开发全程 实现功能代码:播放控制 APP开发流程实例讲解-儒释道网络电台八天开发全程 项目发起 功能和界面初步设定 在Android Studio中完成界面设 ...

  2. T100开发新程序步骤

    前置:1,GDC开启,并登录到T100系统 2,设计器开启,并登录 开始 1,前往azzi900,注册程序号,系统将自动产生规格和源码的初始版次号(仅供签出,还不能下载) 2,前往azzi910,注册 ...

  3. 【实习】T100开发学习笔记

    T100开发学习笔记 笔记目录 一些小技巧 实用的通用快捷键 所有全局变量(top_global.inc文件) 笔记目录 Linux 学习笔记 T100 基础架构.命名原则 Genero FGL (T ...

  4. 【开发教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计    本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...

  5. Vue.js 2.5 发布,而这个会玩的团队已经自研出用 Vue 开发小程序的框架了

    在尤大微博铺垫着"将会引入一些关于 TypeScript 的改进"一周之后,代号为 Level E 的 Vue.js 2.5 带着日漫风来到了我们眼前.从 Release Note ...

  6. 用Vue开发小程序的框架

    在尤大微博铺垫着"将会引入一些关于 TypeScript 的改进"一周之后,代号为 Level E 的 Vue.js 2.5 带着日漫风来到了我们眼前.从 Release Note ...

  7. 【开源教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计    本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...

  8. 【实习之T100开发】T100 单档程序开发(2)添加功能

    T100单档程序 一.添加 性别[下拉框].入职日期 1.r.t 数据表增加字段 2.设计器更新基础数据.重新产生基础数据 3.设计器修改界面并上传 4.重新下载程序代码,修改 azzi600系统分类 ...

  9. 【实习之T100开发】T100 单档程序开发(1)开发流程

    T100单档程序 单双档程序的 (全新) 开发流程 adzi140 数据表设计器介绍 r.t 建表 建表 (全新) 建表 (修改标准表) T100设计器 画面生成器 adzp168 单档 (全新) 完 ...

最新文章

  1. ant 获取当前url的参数
  2. 以太网迎新增长 专家眼中的车载以太网及AVB技术
  3. 大数据、云计算、AI大牛都在这里了,就等你来捞干货
  4. Vue数据更新数据不渲染问题 - 资源篇
  5. MySQL怎么导出用户权限表_导出MySQL用户权限_MySQL
  6. vs.net 2005中引用webservice的简单方法
  7. 使用Data URI Scheme优雅的实现前端导出csv
  8. mysql实现俩个属性加减运算_1.3 算数运算符
  9. SharePoint 2010 获取列表全部定义方法
  10. Nginx 多重判断
  11. 查看redis安装目录
  12. 【LA 2572】Viva Confetti(圆与圆弧覆盖+精度问题)
  13. 小米随身wifi的linux驱动,小米随身wifi驱动
  14. 记一次阿里云RDS MYSQL 数据恢复的经历
  15. 基于JAVA教务排课系统计算机毕业设计源码+数据库+lw文档+系统+部署
  16. IDEA 学生注册成功并使用一段时间,还要激活,并且提示No suitable licenses associated with account
  17. 华为认证云服务架构专家正式发布!
  18. 什么是restful?说说你对restful的理解
  19. 系统卡顿有服务器硬件的原因,服务器出现卡顿,一般是这个3个原因!
  20. 制作你自己的yolov5数据集并进行训练

热门文章

  1. 春节后赚钱风口在哪?
  2. 成功不自律仍是一场空
  3. 怎么把GMS的软件转到HMS?
  4. 路由器用到坏才换?路由器你在乎哪些功能?
  5. 历史上有过哪些有名的神级显卡?
  6. Its configuration is R5 3600, ASUS B450M motherboard
  7. MyBatis的搭建流程(idea+maven)
  8. Qt4_你可以使用加农炮了
  9. C++STL库中的map容器
  10. Servlet and Tomcat