利用数据源实现按步长累加计算
数据接口,填表公式,业务公式是云表平台的3架马车。业务公式是实现业务逻辑工具,业务公式中经常用数据接口作数据源来提供数据,通过数据接口实现列扩展,行扩展。所以深入理解数据源的工作原理显的很重要。之前看过N遍乐乐老师BOM设计与应用的视频教材,学习过后能基本理解其应用。但感觉还是比较抽象,几天不接触学习感觉又会生疏。
所以尝试用平常的数字加法方式来进行学习分析。实现内容:从指定的某个数开始,并按固定步长进行累加,到指定的结束数为止计算各数据之和。
若按传统软件开发,肯定是IF ,ELSE 的嵌套循环方式进行条件判断及累加。需要用代码编程方式实现。用云表平台的业务公式借助数据源(数据接口)怎么实现呢?
先实现简单要求:从1开始,按步长为1进行累加,到10为止。即从1+2+3+….+10=55.
数据接口利用系统预设的序号列表,利用开始序号,结束序号分别对应开始数,结束数。


1. 设置操作界面:
实现思路说明:先把符合条件的数字填写到明细表中,然后利用SUM()函数进行累加。主表与明细表结合的方式,思路确定后动手画制模板。如下图:


2. 设置单据状态设置

3.1 设置业务公式:(主表设置),

3.2 设置业务公式:(明细表设置)
注意:设置明细之前必须制定对应的主表,本实列通过”单号”来确定主表。因步长为1,这里就不设置步长参数了。

4. 测试效果。从1开始,按步长为1,一直累加到10. 累加得数为55. 如下图。

利用“序号列表”的数据接口,根据开始序号=开始数,结束序号=结束数,符合条件的序号数写入到明细表中,利用序号列表中的调试可见一斑。即通过下图数据接口的“调试”功能,开始序号输入1, 结束序号输入10,查询后得到从1到10连续的10个数字。如下图。

但真正把数据写入到业务公式目标表,是需要符合相关操作要求和条件的。我们逐步分析各步骤及含义:如下图:各操作步骤标注的左侧红色编号:
1. 选择数据源:本表单(即主表,根据需要也可以选择明细表)。在下方填些表达式时可以利用所选的本表单或明细表。
2. 情况:执行条件—单据状态=常量.是。 即按下菜单按钮时执行。根据需要可以设置情况1,情况2,情况N. 从左往右依次执行。
子数据源的设置:
说明:数据接口的作用即根据数据接口参数,
开始数=1关联到数据接口的开始序号,结束数=10 关联到数据接口的结束序号。

即利用数据接口实现目标表的行扩展或者列扩展,根据实际情况可以设置同级数据源或者子数据源。注意需要多记录时小方框需打勾。
3.当满足以下条件时: 其实增加了过滤条件,使之业务公式更加灵活多变,复杂的逻辑往往也通过此设置条件进行实现。包括下面列子:“按步长取数”也通过此设置条件得到。
4. 对目标表执行什么操作:
目标表区分主表与明细表,即下图左侧蓝色字体说明。
具体操作:插入,删除,更新,报错,自动流程。 本列子为“插入记录”操作。
插入操作时的“赋值”:这个填写需要转换个思路,一般填写往往是具体的某个结果。这里填写的是“序号列表.序号”,是数据接口中的数值。如下图:

以上1,2,3,4操作步骤设置内容图示:


图:各操作步骤标注

因为在上面第3步骤中我们没有设置条件,所以根据数据源头设置的从1到10.连续10个数字全部取得。即明细表插入了从1到10的数据,根据SUM()函数得到的汇总数值为55.
若能理解以上操作原理。下面按设置步长获取数据过程也就不难理解了。
要求:比如从1开始,固定步长为3,一直到10为止的各数字之和。 即1+4+7+10=22. 第1个数字与最后1个数字分别对应开始数,结束数, 比较容易取得。但中间的4,7的数字根据步长得到,而且数据个数不固定。这个实现需要梳理下思路,如果步长为1从上面分析结果是全部取数,步长为3时,是需要符合一定条件的数字才可获取。这个条件怎么写,是否有现成的函数?
最终通过(数学函数—求余数)。如下图



即按“步长的整数倍+开始数”,并且符合在区间内的数字填写到明细表中。
这个过程实现的原理:
先根据数据接口获取从1到10的数字,并从第1个数字1开始,代入以上公式是否满足,若满足条件执行“插入记录”。
求余数(<被除数>,<除数>)=余数。 余数为0的序号列表.序号数赋值给明细。
(2-1)/ 3---- 余数为1, 不符合条件。
(3-1)/ 3---- 余数为2, 不符合条件。
(4-1)/ 3---- 余数为0, 符合条件。
(5-1)/ 3---- 余数为1, 不符合条件。
(6-1)/ 3---- 余数为2, 不符合条件。
(7-1)/ 3---- 余数为0, 符合条件。
(8-1)/ 3---- 余数为1, 不符合条件。
(9-1)/ 3---- 余数为2, 不符合条件。
(10-1)/ 3---- 余数为3, 符合条件。
从上面分析得到 数字分别是4,7,10,因为10刚好也是结束数。
为避免不重复赋值,需要写个条件进行排除,这个留给大家思考…..
从上面分析可以看出,数字从1到10每个数都会循环比对,即术语中的“遍历”。
实现传统软件中 IF ,ELSE 的循环嵌套的功能。
显示结果如下图,


隐藏明细等不必要显示内容,最终呈现如下图:




欢迎转载,转载请保留本文地址//www.relmradio.com/bbs/t-781-1.html谢谢。
+1 0
5条回帖
gderp 云粉 2015-10-14 08:59:22
楼主啊,你的截图上传了吗,我怎么看不到的
+1 0
jackli 云豆 2015-10-15 17:45:33
图呢?
+1 0
lsh767 云粉 楼主 2015-10-15 22:30:11

利用数据源实现按步长累加计算

数据接口,填表公式,业务公式是云表平台的3架马车。业务公式是实现业务逻辑工具,业务公式中经常用数据接口作数据源来提供数据,通过数据接口实现列扩展,行扩展。所以深入理解数据源的工作原理显的很重要。之前看过N遍乐乐老师BOM设计与应用的视频教材,学习过后能基本理解其应用。但感觉还是比较抽象,几天不接触学习感觉又会生疏。

所以尝试用平常的数字加法方式来进行学习分析。实现内容:从指定的某个数开始,并按固定步长进行累加,到指定的结束数为止计算各数据之和。
若按传统软件开发,肯定是IF ,ELSE的嵌套循环方式进行条件判断及累加。需要用代码编程方式实现。用云表平台的业务公式借助数据源(数据接口)怎么实现呢?
先实现简单要求:从1开始,按步长为1进行累加,到10为止。即从1+2+3+….+10=55.
数据接口利用系统预设的序号列表,利用开始序号,结束序号分别对应开始数,结束数。



1.设置操作界面:

实现思路说明:先把符合条件的数字填写到明细表中,然后利用SUM()函数进行累加。主表与明细表结合的方式,思路确定后动手画制模板。如下图:

2.设置单据状态设置

3.1设置业务公式:(主表设置),



3.2设置业务公式:(明细表设置)

注意:设置明细之前必须制定对应的主表,本实列通过单号来确定主表。因步长为1,这里就不设置步长参数了。


4.测试效果。从1开始,按步长为1,一直累加到10. 累加得数为55. 如下图。


利用“序号列表”的数据接口,根据开始序号=开始数,结束序号=结束数,符合条件的序号数写入到明细表中,利用序号列表中的调试可见一斑。即通过下图数据接口的“调试”功能,开始序号输入1,结束序号输入10,查询后得到从110连续的10个数字。如下图。



但真正把数据写入到业务公式目标表,是需要符合相关操作要求和条件的。我们逐步分析各步骤及含义:如下图:各操作步骤标注的左侧红色编号:
1. 选择数据源:本表单(即主表,根据需要也可以选择明细表)。在下方填些表达式时可以利用所选的本表单或明细表。
2. 情况:执行条件—单据状态=常量.是。 即按下菜单按钮时执行。根据需要可以设置情况1,情况2,情况N. 从左往右依次执行。
子数据源的设置:
说明:数据接口的作用即根据数据接口参数,
开始数=1关联到数据接口的开始序号,结束数=10 关联到数据接口的结束序号。

即利用数据接口实现目标表的行扩展或者列扩展,根据实际情况可以设置同级数据源或者子数据源。注意需要多记录时小方框需打勾。
3. 当满足以下条件时 其实增加了过滤条件,使之业务公式更加灵活多变,复杂的逻辑往往也通过此设置条件进行实现。包括下面列子:“按步长取数”也通过此设置条件得到。
4. 对目标表执行什么操作
目标表区分主表与明细表,即下图左侧蓝色字体说明。
具体操作:插入,删除,更新,报错,自动流程。本列子为“插入记录”操作。
插入操作时的“赋值”:这个填写需要转换个思路,一般填写往往是具体的某个结果。这里填写的是“序号列表.序号”,是数据接口中的数值。如下图:

以上1,2,3,4操作步骤设置内容图示。
因为在上面第 3步骤中我们没有设置条件,所以根据数据源头设置的从 110.连续 10个数字全部取得。即明细表插入了从 110的数据,根据 SUM()函数得到的汇总数值为 55.

若能理解以上操作原理。下面按设置步长获取数据过程也就不难理解了。

要求:比如从 1开始,固定步长为 3,一直到 10为止的各数字之和。 1+4+7+10=22.1个数字与最后 1个数字分别对应开始数,结束数, 比较容易取得。但中间的 4,7的数字根据步长得到,而且数据个数不固定。这个实现需要梳理下思路,如果步长为 1从上面分析结果是全部取数,步长为 3时,是需要符合一定条件的数字才可获取。这个条件怎么写,是否有现成的函数?

最终通过( 数学函数 求余数)。如下图


即按“步长的整数倍 +开始数”,并且符合在区间内的数字填写到明细表中。

这个过程实现的原理:
先根据数据接口获取从 110的数字,并从第 1个数字 1开始,代入以上公式是否满足,若满足条件执行“插入记录”。

求余数( <被除数 >,<除数 >=余数。 余数为 0的序号列表 .序号数赋值给明细。

2-1/ 3----余数为 1不符合条件。

3-1/ 3----余数为 2不符合条件。

4-1/ 3----余数为 0符合条件。

5-1/ 3----余数为 1不符合条件。

6-1/ 3----余数为 2不符合条件。

7-1/ 3----余数为 0符合条件。

8-1/ 3----余数为 1不符合条件。

9-1/ 3----余数为 2不符合条件。

10-1/ 3----余数为 3符合条件。

从上面分析得到 数字分别是 4,7,10,因为 10刚好也是结束数。

为避免不重复赋值,需要写个条件进行排除,这个留给大家思考 …..

从上面分析可以看出,数字从 110每个数都会循环比对,即术语中的“遍历”。

实现传统软件中 IF ,ELSE的循环嵌套的功能。

显示结果如下图,


















图4.jpg

图4.jpg

图12.jpg

图12.jpg
+1 0
lsh767 云粉 楼主 2015-10-15 22:34:50
5#
不好意思,第1次发布图片不知道怎么上去,修改时在回复中补充了。
+1 0
Moke 云侠 2015-10-16 16:18:14
6#
写得很详细,学习拉,希望大家都向你学习,把经验分享出来
+1 0
需要登录后才可进行回复 登录

玩转云表从入门到精通
扫码添加微信立即领取

·云表创始人授课文件
·加入社群与培训学习
·切磋云表开发玩法

商务咨询:0756-3335860
客服咨询
Baidu
map