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

    读取选择成员内的name内容,这样一旦选择成员,自动读取姓名填在“姓名”组件文本框内。在关联报表里面可以直接调用姓名列。

    • 问题:为了减轻后期录入工作量,通过身份证号码自动计算其他相关信息
    • 解决:使用公式编辑功能,通过身份照号码自动计算获得年龄、性别等信息

    计算年龄:
    下述代码可直接复制到公式编辑器内,注意替换身份证字段。

    1. {"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()转为数值。

    计算性别:
    下述代码可直接复制到公式编辑器内,注意替换身份证字段。

    1. {"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 下述代码可直接复制到公式编辑器内,注意替换身份证字段。 :::

    1. {"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):将文本转化为数字