r.v 带值校验(adzi220)
执行指令:r.v 或 r.r adzi220
本支作业的目的是为了让开发人员可以透过设定的方式处理校验带值,这些设定可以让开发人员重新使用这些设定,加快开发速度。
- 行业别
新增校验带值时,首先要决定归属行业别,默认值为标准行业(sd)不用特别选取。此字段与校验带值命名原则有关:当选择其他行业别(例如:制药业 ph),
则校验带值命名必须以_ph 为结尾。
- 校验带值型态
目前支持三种校验带值情境:
A. 检查存在:通常使用在输入数据离开时检查输入值是否存在,当检查不存在时会提示错误讯息。
- 带值:通常使用在。
- 检查存在并带值:通常使用在数据检查存在之后同时将符合的数据带回,例如[关联标签编号]输入’B001’后,检查无误就会同时带出其说明’良品库位’。
- 客制标示
此字段由程序自动控制,在标准(产品中心)环境新增校验带值时,此字段(不打勾),
在客户环境新增新增校验带值时,此字段(打勾),在客户环境修改标准的校验带值时会弹窗询问,若确认要标
准转客制则此字段(打勾)。
- SQL 指令与参数设定
1
1
SQL 指令:让使用者自行撰写开窗 SQL,但可透过[SQL 范例编辑]来维护常用的 SQL 语句(如下图),并在下
拉选单选择所需要的 SQL 范例,可减少编辑 SQL 的时间。
SQL 指令的<tag>:tag 是为了让我们可以容易地解析开发者所设计的 SQL 指令,tag 之间有很大的弹
性,例如子查询可以直接写在这里,说明如下
– <count>:查询语法的 SELECT~FROM 之间,但在<field>之前,通常是将 COUNT(*)语法写在这个 tag 范
围内。
– <field>:查询语法的 SELECT~FROM 之间,通常是将回传字段写在这个 tag 范围内。
– <table>:查询语法的 FROM~WHERE 之间,通常是将查询语法所用到的 Table 写在这个 tag 范围内。
– <wc>:查询语法的 WHERE~ORDER BY 之间,但在<inwc>之前,通常是将查询语法的 WHERE 条件写在这个 tag 范围内。
- 参数设定:最多 9 组,只接受 arg1、arg2、…、arg9。
- 可使用的公用变量:在 SQL 指令内我们可以使用列举出的公用变量,程序在执行时会自动替换这些公用变量。
三种校验带值情境的 SQL 范例:
- 检查存在:
- 带值:
C. 检查存在并带值:
也可透过[SQL Builder]来协助建置 SQL(如下图,操作方式可参考档:[操作手册]r.q,r.v 之 SQL Builder 说明.docx)。
- 不存在的提示讯息
可以设定当检查不存在的时候要出现甚么样的错误讯息。
- 存在时的额外判断条件
若检查存在有分层级条件检查,则可透过额外的条件设定来达到检查的目的。
- 校验带值测试工具
此功能可以协助验证所设计的校验带值是否正确。
修改和删除时的提醒
修改和删除校验带值设计数据时,会自动检查此校验带值设定是否在程序中被使用,并会出现以下提醒画面,建议要去调整一下这些程序。
- 查询使用中程序
此功能可以协助列出此校验带值目前被哪些程序呼叫。
- 在程序中如何使用校验带值设定
校验带值 libarary 的设计的变量主要使用 top_global.inc 中 g_chkparam.*全局变量,主要的 library 都放在 com/lib/cl_chk_validate.4gl,底下为范例:
一、以下是 g_chkparam 的规划: #cl_chk_validate.4gl 专用变数
DEFINE g_chkparam RECORD
where | STRING, | #外部额外设定的 WHERE 条件 |
default1 | STRING, | #相关字段一的默认值 |
default2 | STRING, | #相关字段二的默认值 |
default3 | STRING, | #相关字段三的默认值 |
default4 | STRING, | #相关字段四的默认值 |
default5 | STRING, | #相关字段五的默认值 |
default6 | STRING, | #相关字段六的默认值 |
default7 | STRING, | #相关字段七的默认值 |
default8 | STRING, | #相关字段八的默认值 |
default9 | STRING, | #相关字段九的默认值 |
arg1 | STRING, | #外部参数一 |
arg2 | STRING, | #外部参数二 |
arg3 | STRING, | #外部参数三 |
arg4 | STRING, | #外部参数四 |
arg5 | STRING, | #外部参数五 |
arg6 | STRING, | #外部参数六 |
arg7 | STRING, | #外部参数七 |
arg8 | STRING, | #外部参数八 |
arg9 | STRING, | #外部参数九 |
return1 | STRING, | #回传资料一 |
return2 | STRING, | #回传资料二 |
return3 | STRING, | #回传资料三 |
return4 | STRING, | #回传资料四 |
return5 | STRING, | #回传资料五 |
return6 | STRING, | #回传资料六 |
return7 | STRING, | #回传资料七 |
return8 | STRING, | #回传资料八 |
return9 | STRING | #回传资料九 |
END RECORD |
- library 的介绍和使用范例
- 检查存在的 library:cl_chk_exist(p_chk_id)
############################################################
#+ @code
#+ 函式目的 检查是否存在,根据其 SQL(l_dzcd003)进行检查存在,若数据不存在则显示错误讯息(l_dzcd004)
#+ @param p_chk_id CHAR(20) 校验带值标识符
#+ @return BOOLEAN FALSE(数据不存在或 SQL 语句错误)/TRUE(数据存在)
############################################################
使用范例
#设定 g_chkparam.*的参数前,先将其初始化,避免之前设定遗留的参数值造成影响。
INITIALIZE g_chkparam.* TO NULL
#设定 g_chkparam.*的参数 LET g_chkparam.arg1 = ‘v_test1’ LET g_chkparam.arg2 = ‘111’
LET g_chkparam.where = ‘ AND 1=1’
#呼叫检查存在的 library IF cl_chk_exist(“v_test1”) THEN
DISPLAY “数据存在”
ELSE
DISPLAY “数据不存在或 SQL 语句错误”
END IF
- 带值的 library:cl_ref_val(p_chk_id)
############################################################
#+ @code
#+ 函式目的 根据其 SQL(l_dzcd003)带出参照的域值,若资料笔数不唯一则显示错误讯息(l_dzcd004)
#+ ,然后带回默认值
#+ @param p_chk_id CHAR(20) 校验带值标识符
############################################################
使用范例
#设定 g_chkparam.*的参数前,先将其初始化,避免之前设定遗留的参数值造成影响。
INITIALIZE g_chkparam.* TO NULL
#设定 g_chkparam.*的参数
LET g_chkparam.arg1 = “v_test1” LET g_chkparam.arg2 = “1”
LET g_chkparam.where = ” AND 1=1 ” LET g_chkparam.default1 =’111′
LET g_chkparam.default2 =’222′ LET g_chkparam.default2 =’333′
#呼叫带值的 library
CALL cl_ref_val(“v_test2”)
#检视回传值
DISPLAY “return1 = “,g_chkparam.return1
DISPLAY “return2 = “,g_chkparam.return2
DISPLAY “return3 = “,g_chkparam.return3
DISPLAY “return4 = “,g_chkparam.return4
DISPLAY “return5 = “,g_chkparam.return5
3. 检查存在并带值的 library:cl_chk_exist_and_ref_val(p_chk_id)
############################################################
#+ @code
#+ 函式目的 根据其 SQL(l_dzcd003) 检查存在并带出参照的域值 , 若资料笔数不唯一则显示错误讯息
(l_dzcd004)
#+ ,然后带回默认值
#+ @param p_chk_id CHAR(20) 校验带值标识符
#+ @return BOOLEAN FALSE(数据笔数不唯一或 SQL 语句错误)/TRUE(数据笔数唯一且已带值)
############################################################
使用范例
#设定 g_chkparam.*的参数前,先将其初始化,避免之前设定遗留的参数值造成影响。
INITIALIZE g_chkparam.* TO NULL
#设定 g_chkparam.*的参数
LET g_chkparam.arg1 = “v_test3”
LET g_chkparam.where = “AND 1=1” LET g_chkparam.default1 =’111′
LET g_chkparam.default2 =’222′
#呼叫检查存在并带值的 library
IF cl_chk_exist_and_ref_val(“v_test3”) THEN
DISPLAY “资料为一笔且已带值”
ELSE
DISPLAY “数据笔数不唯一或 SQL 语句错误”
END IF
#检视回传值
DISPLAY “return1 = “,g_chkparam.return1
DISPLAY “return2 = “,g_chkparam.return2
DISPLAY “return3 = “,g_chkparam.return3
DISPLAY “return4 = “,g_chkparam.return4
DISPLAY “return5 = “,g_chkparam.return5
转载请注明:赫非域 » T100 r.v 带值校验(adzi220)