本文将介绍,在多天数预约的场景中,如何根据预约开始时间和预约天数,判断当前时段是否可预约,并调取出不可预约的具体日期。
1)在表单中预约的基本信息,包括预约设备、预约开始时间和使用天数;
2)通过子表单自动编号的设置,根据使用天数生成对应的子表单行数;
3)在对应子表单行中,生成对应的预约信息唯一值,即预约设备和预约时间的组合值;
4)通过聚合表记录全部预约记录,根据当前预约的会议室预约唯一值数据联动聚合表;
5)如联动结果为空值,则说明之前没有预约记录,支持被预约。
以设备预约的场景为例:
1)如成员已在「设备预约表」中预约使用设备 A,预约开始时间为,使用天数为 7 天:
2)当其他成员在该时间段内再次预约使用该设备 A 时,将在字段中提示不可预约,并告知不可预约日期,且无法提交表单,效果如下:
注:由于安装模板时限制单个表单数据最多为 100 条,故安装模板体验效果时,需要重新按照【2.2 「子表单基础表」录入数据】的步骤录入数据才能成功实现效果,否则将无法体验。
在学习之前建议安装 多天数预约重复性校验 应用模板,本文将按照模板中的示例数据进行讲解。
以设备预约的场景为例:
1)新建「设备预约表」表单,字段设置如下:
字段名称 | 字段类型 |
预约人 | 成员单选 |
预约设备 | 下拉框 |
预约开始时间 | 日期时间 |
使用天数 | 数字 |
是否可预约 | 单行文本 |
不可预约日期 | 单行文本 |
日期明细 | 子表单 |
序号 | 子字段-单行文本 |
查询日期 | 子字段-日期时间 |
日期+设备 | 子字段-单行文本 |
数字辅助 | 子字段-数字 |
聚合表查询辅助 | 子字段-数字 |
已预约日期 | 子字段-单行文本 |
2)新建「子表单基础表」辅助表单,字段设置如下:
字段名称 | 字段类型 |
总行数 | 数字 |
子表单 | 子表单 |
序号 | 子字段-单行文本 |
数字 | 子字段-数字 |
1)在「子表单基础表 >> 数据管理 >> 导入」处导入附件中的示例数据:200行子表单基础表序号全集.xlsx。
2)导入数据时需确认示例数据和表单字段的关联关系如下:
1)进入「设备预约表」表单,选中「日期明细」整个子表单,在「字段属性 >> 默认值」处,设置选项为「数据联动」,点击「数据联动设置」:
2)进入数据联动设置页面,设置内容如下:
全部设置完成点击「确定」。
即使用天数设置为多少天,则在该子表单中添加多少行日期明细数据。
设置好子表单的整体数据联动,接下来设置如下辅助字段的公式:
1)选中「日期明细.查询日期」字段,在「字段属性 >> 默认值」处,设置默认值为「公式编辑」,点击下方「编辑公式」:
2)在公式编辑页面,设置「日期明细.查询日期」的公式为:DATEDELTA(预约开始时间,日期明细.序号-1)
表示自动根据预约开始时间和预约天数生成预约的日期,如第一行展示预约时间当天、第二行展示预约时间 +1 天,以此类推。
设置好记得点击「确定」保存。
3)按照同样的方法,设置「日期明细.日期+设备」字段的公式为:CONCATENATE(TEXT(DATE(日期明细.查询日期),'yyyyMMdd'),即通过 CONCATENATE 函数连接预约日期和设备名称,作为唯一值。
选中「日期明细.数字辅助」字段,在「字段属性 >> 默认值」处,设置默认值为「自定义」,在下方输入框中设置默认值为 1,便于后续作为聚合表的指标。
1)新建 聚合表,设置数据来源为单表数据,数据表选择「设备预约表」,设置好点击「确定」。
2)设置聚合表的行表头和指标如下:
1)选中「日期明细.聚合表查询辅助」字段,在「字段属性 >> 默认值」处,设置默认值为「数据联动」,点击下方「数据联动设置」:
2)进入数据联动设置页面,设置内容如下:
全部设置完成点击「确定」。
同【2.4 设置辅助字段公式】的方法,设置如下校验字段的公式:
在「设备预约表」中设置表单提交校验,当
1)在「表单属性 >> 表单提交校验」处,点击「添加校验条件」:
2)在「提交校验」页面中,设置提示文字为「该设备部分日期已被预定,请重新选择设备或时间进行预约!」,校验公式设置为:是否可预约=="可预约",设置完成后点击「确定」。
1)对于表单中的「日期明细」辅助字段,可以在「字段属性 >> 字段权限」处设置字段为不可见:
2)在「表单属性 >> 不可见字段赋值」处,设置赋值规则为「始终重新计算」:
效果演示参见本文【1.4 预期效果】。