1.业务场景
在针对固定场所的预约场景中预定酒店会议室,存在需要对场所进行多天预约的情况,并且对一次性预约天数有限制这里以会议室为例。需要实现根据预约开始时间和预约天数(以一次限制最多5天为例),判断当前时段是否可预约,不可预约的日期是哪几天。
2.表单效果
一个表单,填入预约人、会议室、预约开始时间、预约天数(最多5天),显示是否可预约、不可预约天数。
3.解决思路
在子表单内根据预约开始时间和预约天数,自动生成会议室预约唯一值,即预约日期和预约会议室的组合值。聚合表记录历史提交数据,根据当前预约的会议室预约唯一值数据联动聚合表,联动结果为空值则说明之前没有预约过。
4.设置步骤
表单设置
【子表单行数基础表】:主表和子表字段全部采用数字字段;录入尽可能多的数据用于后续的数据联动。
【会议室预约表】:预约基础信息+子表单辅助计算。
预约基础信息表:会议室基本的预约信息填报以及可否预约校验。
(1)序号:子表单整体设置默认值预定酒店会议室,根据“预约天数”联动【子表单行数基础表】中的序号数字字段。
(2)日期时间:自动根据预约开始时间和预约天数生成预约的日期。
IF(ISEMPTY(预约明细.序号)==0,DATEDELTA(开始时间,预约明细.序号-1),'')。
预约明细辅助表:
辅助1:连接会议室名称+日期,作为唯一值。
IF(ISEMPTY(预约明细.日期时间)!=1,CONCATENATE(TEXT(DATE(预约明细.日期时间),'yyyyMMdd'),会议室),'')
辅助2:数字字段设置默认值为1,作为辅助聚合表的指标。
辅助3:数据联动聚合表中的辅助3作为指标的数据。
辅助4:获取辅助3不为空的预约日期的文本格式。
IF(IF(AND(ISEMPTY(预约明细.辅助3)==0,ISEMPTY(预约明细.序号)==0),1,0)!=0,TEXT(DATE(预约明细.日期时间),'yyyy-MM-dd'),'')
聚合表设置
通过聚合表计算已提交的数据,在预约明细中调用聚合表数据校验当前时间段是否已被预约。
5.效果演示
点击体验:多天会议室预定