1.需求
在设计开发中,为实现某个功能,我们通常需要创建循环,再配合相应的操作来实现。为了让大家掌握循环的分析与设计方法,我们以“批量生成明细数据”为例:通过设定起止日期,系统将自动生成符合指定星期条件的日期列表(如下图所示)。

2.实现分析

问题1:如何获取从起订日期到止订日期的每个日期?
这里引入1个辅助变量“辅助日期”,用于保存从起订日期到止订日期的每个日期,利用序号列表产生循环实现该变量的多次赋值。
问题2:如何处理星期?
1)将“星期”先定义为文本类型的数据项,再将它的单元格类型设置为“多选框”实现多选。用户多选时,系统会自动将选中的项拼接为逗号分隔的字符串。
2)查看方式:在“星期”值变化事件中,通过给“星期文本”数据项赋值的操作,具体查看选中后的值(效果见下图)。

问题3:如何判断辅助日期的星期,是否在所选星期中?
通过字符串位置函数,它有2个变量 子串 和文本,此函数返回取出子串在父串中第一次出现的位置, 如果未出现,则返回0。
3.实现步骤
1)添加辅助变量。在测试过程中,可以为辅助变量设置“表格”和“位置”信息,以便在界面上直观查看其值的变化。
- 总天数:存储从“起订日期”到“止订日期”之间的总天数。
- 辅助日期:在循环中依次存储需要判断的每一个日期。

2)循环赋值辅助日期。
计算总天数。更改起订日期或者止订日期时,重新计算总天数。

单击【确定】按钮时,先生成一个从 0 到“总天数-1”的序号列表,作为循环。然后,通过日期加减函数,依次计算出从“起订日期”到“止订日期-1”的每一个日期赋值给“辅助日期”。

3)条件判断与插入。“辅助日期”赋值后触发它的值变化事件。在此事件的执行条件中,系统通过
子串位置函数判断辅助日期的星期值是否包含于用户“所选星期”的字符串内。如果条件满足,则在明细中插入一条此日期生成的记录,否则回到循环,再取序号列表的下一个序号。
4.实现效果
新建表单后,系统已预先填写了起止日期。当用户多选星期后单击【确定】,系统便会自动将符合条件的日期插入到明细中。
