INITIALIZE g_errparam TO NULL
LET g_errparam.extend = “”
LET g_errparam.code = “coo-00667”
LET g_errparam.popup = TRUE
CALL cl_err()
EXIT MENU #报错后退出MENU
END IF
#END add-point
END 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 #若报错,走下面的报错信息,并且关闭游标,直接返回FALSE
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = “OPEN cooi666_cl:”
LET g_errparam.code = STATUS
LET g_errparam.popup = TRUE
CALL cl_err()
CLOSE cooi666_cl #关闭游标
LET l_success = FALSE
RETURN l_success #直接返回 FALSE
END IF
#通过input语法直接修改身份证号,如果不写input,不能在画面上输入字段的值
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
INPUT BY NAME g_oozyuc_m.oozyuc005 ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE INPUT
BEFORE FIELD oozyuc005
AFTER FIELD oozyuc005 #校验带值
IF NOT cl_null(g_oozyuc_m.oozyuc005) THEN
#写一些其他逻辑
DISPLAY BY NAME g_oozyuc_m.oozyuc005
END IF
ON CHANGE oozyuc005
ON ACTION controlp INFIELD oozyuc005 #如果是需要开窗写在下面
AFTER INPUT #input输入之后,直接更新到数据库
UPDATE oozyuc_t SET oozyuc005 = g_oozyuc_m.oozyuc005
WHERE oozyucent = g_enterprise
AND oozyuc001 = g_oozyuc_m.oozyuc001
IF SQLCA.SQLCODE THEN
INITIALIZE g_errparam TO NULL
LET g_errparam.extend = “”
LET g_errparam.code = SQLCA.SQLCODE
LET g_errparam.popup = TRUE
CLOSE cooi666_cl
CALL cl_err()
LET l_success = FALSE
END IF
END INPUT #input结束
ON ACTION controlf
CALL cl_set_focus_form(ui.Interface.getRootNode()) RETURNING g_fld_name,g_frm_name
CALL cl_fldhelp(g_frm_name, g_fld_name, g_lang)
ON ACTION controlr
CALL cl_show_req_fields()
ON ACTION controls
IF g_header_hidden THEN
CALL gfrm_curr.setElementHidden(“vb_master”,0)
CALL gfrm_curr.setElementImage(“controls”,“small/arr-u.png”)
LET g_header_hidden = 0 #visible
ELSE
CALL gfrm_curr.setElementHidden(“vb_master”,1)
CALL gfrm_curr.setElementImage(“controls”,“small/arr-d.png”)
LET g_header_hidden = 1 #hidden
END IF
ON ACTION accept
ACCEPT DIALOG
ON ACTION cancel #取消
LET INT_FLAG = TRUE
ON ACTION close #关闭,右上角的(X)
ACCEPT DIALOG
ON ACTION exit #离开
ACCEPT DIALOG
#交談指令共用ACTION
&include “common_action.4gl”
CONTINUE DIALOG
END DIALOG
RETURN l_success
END FUNCTION
=================&