1、问题背景
在子表单中录入开始时间和结束时间,可能会录入多条,需要在第二个子表单中将每一天都显示出来。
2、解决思路
在录入表中计算出开始和结束的天数差+1得到重复次数,然后将开始时间重复显示并用逗号隔开,以背景中的截图为例,显示为20210401,20210401,20210401,然后通过数据联动关联出天数集合,为1,2,3,重复次数为几,天数集合就显示到几,然后将开始时间集合和天数集合显示到子表单2中,每一条记录对应分别在开始时间上加上1天、2天、3天,这样就可以得到每一天的日期了。
3、知识库外链
https://t6ixa9nyl6.jiandaoyun.com/sharedoc/15BzE0ELtkxJrVd3BJL9ob
4、应用安装链接
https://jiandaoyun.com/a/606ea2ab167b14000701069b
二、设计说明
1、表单及功能说明
拆分开始-结束的每一天:数据录入表,录入开始和结束时间,自动拆分显示每一天;
天数集合基础表:录入重复次数对应的天数集合;
序号基础表:录入天数对应的子表单序号。
2、具体设置
(1)天数集合基础表
表单中添加数字和文本字段,然后对应录入数据,开始时间和结束时间天数差最大是多少,这里就要录到多少。
(2)序号基础表
在主表和子表单中分别添加一个数字,并录入对应的基础数据,多条记录的天数差合计最大有几天,这里就要录入到几,比如每条记录天数差最多为10天,那这里就要录入到20。
(3)拆分开始-结束每一天
开始时间、结束时间:手动录入;
重复次数:公式为 DAYS(日期录入.结束时间,日期录入.开始时间)+1 意思是获取天数差;
开始时间集合:公式为 REPT(CONCATENATE(TEXT(DATE(日期录入.开始时间),'yyyyMMdd'),','),日期录入.重复次数) 通过rept函数重复显示开始时间,并用逗号隔开;
天数集合:设置数据联动,通过重复次数联动天数集合基础表。
开始时间集合汇总:公式为 CONCATENATE(日期录入.开始时间集合) 将日期录入子表中多条记录的开始时间集合汇总在一起,通过逗号隔开显示;
天数汇总:公式为 TEXT(日期录入.天数集合) 将日期录入子表中多条记录的天数集合汇总在一起,通过逗号隔开显示;
天数:COUNT(SPLIT(天数汇总,',')) 获取天数汇总里面的数字个数;
日期显示子表单:对这个子表单设置整体联动,通过天数联动序号基础表中的序号;
开始时间文本:公式为 SPLIT(开始时间集合汇总,',')[日期显示.序号-1] 通过序号获取开始时间集合汇总中的每一个日期;
天数:公式为 SPLIT(天数汇总,',')[日期显示.序号-1] 通过序号获取天数汇总中的每一个天数;
最终日期:公式为 DATE(VALUE(LEFT(日期显示.开始时间文本,4)),VALUE(MID(日期显示.开始时间文本,5,2)),VALUE(RIGHT(日期显示.开始时间文本,2))+日期显示.天数-1) 用开始时间文本加上天数,得到最终的日期,并转换成日期格式。
|