Infopath【函数】--(substring-before,substring-after,concat)巧妙运用

【原创】

一、新建人员配置列表,包括:登录账号,显示名称,所在部门,部门经理等栏。

二、联系人资料重复表,人员选择、人员删除都引用人员配置表中的显示名称。功能实现维系人员支持多选,人员删除可删除选择人员。

1、维系人员选择,如下图有三位维系人员:

当前用户帐号为:userName();

当前用户名称为:@显示名称[@登录帐号 = 当前用户帐号];

维系人员默认值为:当前用户名称;

维系人员规则:设置--维系人员经理名称=@部门经理[@显示名称 = current()];

维系人员选择总规则预览,如下图实现效果可设置维系人员:1张三2王五3李六:

<1>、维系人员选择规则1,如下图标记默认值为0,初始化标记设置标记=【标记】+1:

<2>、维系人员选择规则2如下图设置【维系人员】=【维系人员】+【标记】+【维系人员选择】concat函数运用:

 

<3>、维系人员选择规则3如下图设置【维系人员经理名称】=concat(维系人员经理名称, 标记, @部门经理[@显示名称 = current()])concat函数运用:

 

2、维系人员删除,如下图当人员删除选择标记为1的显示名称时将删除维系人员中标记为1的维系人员:

维系人员删除总规则预览,如下图实现效果可设置维系人员:当人员删除选择了张三,最后得到的是--2王五3李六:

<1>、维系人员删除规则1,如下图substring-before、string-length、substring函数的运用:

条件:维系人员包含维系人员删除;

设置:标记1=substring-before(维系人员, 维系人员删除);注释:读取【维系人员删除】之前字符串。

设置:标记2=substring(标记1, string-length(标记1), 1);注释:获取【维系人员删除】之前字符串在‘(string-length(标记1)’位置的字符串。

设置:标记3=substring(标记1, string-length(标记1) - 1, 1);注释:获取【维系人员删除】之前字符串在‘(string-length(标记1)-1’位置的字符串,用于【标记】两位的情况。

<2>、维系人员删除规则2,如下图:

条件:维系人员包含维系人员删除、标记3>=1、标记3<=9;(注释:判断【标记】是1位数还是2位数)

设置:位数标记=1;

<3>、维系人员删除规则3,如下图substring-before、concat、substring-after函数运用:

条件:【维系人员】包含【维系人员删除】、【位数标记】=1(注释:【标记】为2位数的情况)

设置:维系人员=concat(substring-before(维系人员, concat(标记3, 标记2, .)), substring-after(维系人员, concat(标记3, 标记2, .)));注释:获取‘【标记】+【维系人员删除】’之前的字符串+‘【标记】+【维系人员删除】’之后的字符串;

        维系人员经理名称=concat(substring-before(维系人员经理名称, concat(标记3, 标记2, @部门经理[@显示名称 = current()])), substring-after(维系人员经理名称, concat(标记3, 标记2, @部门经理[@显示名称 = current()])));注释:获取‘【标记】+【@部门经理[@显示名称 = current()]))】’之前的字符串+‘【标记】+【@部门经理[@显示名称 = current()]))】’之后的字符串;

注释:"."表示【维系人员删除】;

<4>、维系人员删除规则4,如下图substring-before、concat、substring-after函数运用:

条件:【维系人员】包含【维系人员删除】、【位数标记】=0 ( 注释:位数标记默认值为0);

设置:维系人员=concat(substring-before(维系人员, concat(标记2, .)), substring-after(维系人员, concat(标记2, .)));注释:获取‘【标记】+【维系人员删除】’之前的字符串+‘【标记】+【维系人员删除】’之后的字符串;

        维系人员经理名称=concat(substring-before(维系人员经理名称, concat(标记2, @部门经理[@显示名称 = current()])), substring-after(维系人员经理名  称, concat(标记2, @部门经理[@显示名称 = current()])));注释:获取‘【标记】+【@部门经理[@显示名称 = current()]))】’之前的字符串+‘【标记】+【@部门经理[@显示名称 = current()]))】’之后的字符串;

<5>、维系人员删除规则5:

接着这个思路你可以设置【标记】位是三位,别说不会……

本文是作者呕心沥血之作,转载请标明出处……,谢谢您的配合!!!

后续会共享表单下载,敬请期待……

CSDN下载地址

 

posted @ 2009-11-06 17:33  冷月孤星  阅读(1092)  评论(0编辑  收藏  举报