- 问题:表单录入时为了后期调用数据,姓名使用了选取系统内成员的姓名,但是由于姓名使用了关联表单,无法在其他表册中关联和调用。
- 解决:在表单设计中将原来姓名修改为“选择成员”,新增文本组件,命名为“姓名”,使用公式编辑,

读取选择成员内的name内容,这样一旦选择成员,自动读取姓名填在“姓名”组件文本框内。在关联报表里面可以直接调用姓名列。
- 问题:为了减轻后期录入工作量,通过身份证号码自动计算其他相关信息
- 解决:使用公式编辑功能,通过身份照号码自动计算获得年龄、性别等信息
计算年龄:
下述代码可直接复制到公式编辑器内,注意替换身份证字段。
{"text":"IF(EQ(LEN(身份证),18),VALUE(TEXT(TODAY(),\"yyyy\"))-VALUE(RIGHT(LEFT(身份证,10),4)),\"\")","marks":[{"from":{"line":0,"ch":10,"sticky":null},"to":{"line":0,"ch":15,"sticky":null},"value":"textField_kn8841dw","invalid":false},{"from":{"line":0,"ch":66,"sticky":null},"to":{"line":0,"ch":71,"sticky":null},"value":"textField_kn8841dw","invalid":false}],"isCmData":true}
先判断身份证信息是否为 18 位,等于 18 位时再进行计算。 获取到身份证号内出生年的信息与当前时间的年份进行计算,获取年龄,由于LEFT()、RIGHT()、TEXT()函数的结果数据类型为字符串,如要进行计算需要用VALUE()转为数值。
计算性别:
下述代码可直接复制到公式编辑器内,注意替换身份证字段。
{"text":"IF(EQ(MOD(VALUE(MID(身份证号,17,1)),2),1),\"男\",\"女\")","marks":[{"from":{"line":0,"ch":20,"sticky":null},"to":{"line":0,"ch":26,"sticky":null},"value":"textField_ksfyitkm","invalid":false}],"isCmData":true}
●IF(判断条件,结果为 true 的返回值, 结果为 false 的返回值)
●MOD(number, divisor):返回两数相除的余数
●MID(A,B,C):在 A 字符串中,从第 B 位开始取出 C 个字符
●VALUE(text):将文本转化为数字
●EQ(value1,value2)两个值相等返回 true,支持数字,日期
计算出生日期 :::info 下述代码可直接复制到公式编辑器内,注意替换身份证字段。 :::
{"text":"IF(EQ(LEN(身份证号),18),CONCATENATE(MID(身份证号,7,4),\"-\",MID(身份证号,11,2),\"-\",MID(身份证号,13,2)),\"\")","marks":[{"from":{"line":0,"ch":10,"sticky":null},"to":{"line":0,"ch":16,"sticky":null},"value":"textField_ksfyitkm","invalid":false},{"from":{"line":0,"ch":38,"sticky":null},"to":{"line":0,"ch":44,"sticky":null},"value":"textField_ksfyitkm","invalid":false},{"from":{"line":0,"ch":58,"sticky":null},"to":{"line":0,"ch":64,"sticky":null},"value":"textField_ksfyitkm","invalid":false},{"from":{"line":0,"ch":79,"sticky":null},"to":{"line":0,"ch":85,"sticky":null},"value":"textField_ksfyitkm","invalid":false}],"isCmData":true}
●IF(判断条件,结果为 true 的返回值, 结果为 false 的返回值)
●EQ(value1,value2)两个值相等返回 true,支持数字,日期
●LEN(text):返回文本字符串中的字符个数
●CONCATENATE(text1,[text2], …):将多个文本字符串合并成一个文本字符串
●MID(A,B,C):在 A 字符串中,从第 B 位开始取出 C 个字符
●VALUE(text):将文本转化为数字
