我觉得可以这样设计:
先做一个单独的姓名表,添加两个字段,姓名和成员单选。
然后在这个定责任的扣分子表中,每个子表单行添加多个成员单选,和对应的责任扣分,同时再添加一个文本字段:姓名,用关联数据从姓名表中把姓名关联过来。
这样你就获得了一个:姓名1,姓名1扣分,姓名2,姓名2扣分,姓名3,姓名3扣分...这样的一组数据。
然后添加一个文本字段:姓名扣分汇总,公式:concatanate(姓名1,姓名1扣分,姓名1,姓名2,姓名2扣分,姓名2,...)
再添加一个文本字段姓名汇总,公式:concatenate(姓名1,“,”,姓名2,“,”...),把所有姓名字段汇总进来
在主表添加一个文本字段全部扣分,公式:concatenate(扣分子表.姓名扣分汇总)
再在主表添加一个文本字段,全部姓名,公式:concatenate(扣分子表.姓名汇总)
然后主表添加一个文本字段:全部姓名:公式:union(split(全部姓名),",")
再添加一个文本字段,人名数量,公式:count(split(全部姓名),",")
然后再添加一个子表单:扣分汇总,用来计算每个人的扣分。
添加一个序号字段,用子表单关联生成对应的行数。
然后添加一个文本字段,姓名,公式:index(union(split(全部姓名),“,"),value(序号)),在没行子表单中取出对应这个序号的人的姓名。
再添加一个数字字段,公式:sumproduct(split(姓名扣分汇总),姓名),计算出这个人的扣分。
这样你就在这个”扣分汇总“子表单获得了全部人名和他对应的扣分汇总分数。
通过文本关联出1-200行任意数量子表单的方法之前很多人介绍过,这里就不赘述了。
下面是我做的一个demo,亲测有效!
测试外链:https://sjjrj0b41q.jiandaoyun.com/f/64ac9e6700ba790008154c20
如果扣分明细表非要用成员多选,其实也是可以的,只是需要把多选出的那个数组用函数分配到姓名1、姓名2...这些控件中即可。但是感觉没有必要搞那么复杂。
下面是测试页面的截图,扣分明细表添加人和修改分数后,最下面的扣分汇总子表单会自动进行计算。