在会议室预约场景中,表单通常配置了“会议室”、“日期”、“开始时间”和“结束时间”四个字段用来确认会议场地的唯一可用性。因为这里的“开始时间”和“结束时间”在同一天内还要排除时间段包含关系,所以即使通过设置多字段的“联合唯一索引”,也无法准确的校验指定时间段是否存在交叉重复值。
这种情况下,我们就可以通过“自定义控件事件”来实时校验指定日期时间段内对应的会议室是否空闲。
Step 1:添加事件
要实现上述效果,我们需要为“会议室”、“日期”、“开始时间”、“结束时间”4 个字段都添加相同的事件。
我们首先在“会议室”字段添加“值改变时”事件。
Step 2:添加执行条件
这个事件的执行我们要设置同时满足两个条件:
- 预约会议室所有涉及的字段都填写有值;
- 查询会议室预约工作表,当查询结果满足我们需要的会议室当时有空闲;
在“如果满足条件”处点击右侧菜单中的“按字段值”,添加满足字段值筛选的条件,这一步主要是检查所有字段都不能为空:
再添加一个“按查询工作表”的条件,这一步是校验在这个时段内是否已经有存在会议室预约记录:
Step 3:添加执行动作
当满足上述条件时,我们期望能有一个提示消息告诉用户当前时段已经被占用,并清空当前的字段。
点击下方的“+ 执行动作”,添加一个“提示消息”的动作;
Setp 4:复制事件
把配置好的事件,直接复制到“日期”、“开始时间”和“结束时间”这三个字段的“值改变”事件上:
小贴士:控件之间将共用复制而来的事件,一处修改,全部生效
然后记得把“执行动作”中的“设置字段值”动作修改为“清空”自身字段。
事件运行效果
配置好事件保存后,当我们在创建或者编辑记录时,如果选择的会议室时间段不可用,则会弹出提示并清空我们输入的内容: