效果如图!总金额从上往下开始分摊,到了不够的时候,把剩余未分完的金额,全部给该单位。 01.jpg 01-2.jpg



+10
3人收藏
12 条回帖
dong云粉2017-5-26 16:30:45
设计步骤:


01、因为有一些数据无法直接获得,所以先添加几个临时变量。
02.jpg





02、我们需要一个一直在变化的变量来让我们实现累减,在数据源中明细表的rowNo正好符合我们的需要,所以这里第一步我们要把行号带出来
作为变化的数据项。
03.jpg




+11

最近谁赞过

dong云粉2017-5-26 16:18:52
本帖最后由 dong 于 2017-5-26 18:17 编辑

思路参考,总金额每分配一次,就是等于减去了所需要的金额,所以累减,减掉后的同时,也把金额分给了它。
思路01.jpg



+10
dong云粉2017-5-26 16:33:14

清零的话 ,每次输入总金额的时候,他会先把临时变量全部清空,然后在计算分摊。
+10
aa821204213云粉2017-5-26 16:38:00
强势插楼
+10
dong云粉2017-5-26 16:44:41
03、设置【行号】为变化项,然后开始他的表演。把临时的总金额带进去。因为总金额只能允许它赋值一次,否则他就无法实现依次累减的效果。注意条件:【本表单.临时金额   =  ""  并且 本表单.临时金额   =  常量.空


04.jpg





04、到了累减这一步,临时编号起到很大的作用,设置了这个条件后,极大的限制了它去更新所有的数据,只让它更新我们目前操作的数据。

05.jpg



05、上面的操作已经减去了一次的金额,所以我们现在要把它减去的金额返回给分摊金额。我这里设置了一个IF语句,把全部需要判断的条件都融合在一起了。
条件:【if( 本表单.临时金额  >= 0 , 本表单.明细.金额 , if( 本表单.临时金额  < 0 并且  本表单.临时金额  +  本表单.明细.金额  > 0,  本表单.临时金额  +  本表单.明细.金额  ,0))

06.jpg

+10
aa821204213云粉2017-5-26 16:48:42
拿好小板凳,认真学些ing
+10
dong云粉2017-5-26 16:57:05
本帖最后由 dong 于 2017-5-26 18:20 编辑

【if( 本表单.临时金额  >= 0 , 本表单.明细.金额 , if( 本表单.临时金额  < 0 并且  本表单.临时金额  +  本表单.明细.金额  > 0,  本表单.临时金额  +  本表单.明细.金额  ,0))】


这里补充一下对此IF语句的说明:我们每一次减去了此单位所需要分配的金额后就开始判断赋值,判断条件就是判断现在的临时金额的值到底是【大于0】的还是【小于0】的,如果大于等于0,我们就把它自己所需要的金额返回给他,如果小于零并且还有一个条件就是,它如果为负数后,加上原来的金额后,成了正数,说明它分配后还剩下这么多钱,我们就直接把这剩下的返还给他,也就是公式中的【本表单.临时金额  +  本表单.明细.金额】,这个公式他们相加是可能大于0的,所以它大于0了我们就赋值它为【本表单.临时金额  +  本表单.明细.金额】,如果算出来还是负数,那就说明已经没有剩余的金额可以分配了,剩下的就全部赋值0.

+10
dong云粉2017-5-26 17:15:51
本帖最后由 dong 于 2017-5-26 17:17 编辑

经验心得:这个简单的金额分摊,很考验人的思维方式,而且很抽象,我前期也是卡死在这里一天,最后才领悟当中的原理。 我们需要提取总金额,然后还要依次计算,依次赋值。

总结以下几点:
01、这个分摊给我的教训就是  我们要正确的设置填表公式中所有赋值操作中的顺序关系(卡死在这半天才醒过来),填表公式当中赋值的顺序,非常重要。一个完美的公式,可能会因为移动了一个顺序,而导致奔溃,所以程序走下去的先后关系非常重要,思路一定要清晰。
                     
02、关于明细数据源的操作方式,如果没有对【显示窗口】打勾,默认是把数据源当中所有的数据都执行一边操作,这也就是为什么,对总金额设置好的值变化,总金额只变化了一次却能够让行号和临时编号变化多次的原理。这也是为什么这个要放在第一步来做的原因。

OK,完结,等有时间更新下其他的思路和其他的做法,这个做法相对较简单,不过也已足够对金额进行分摊的操作了。
顺序.jpg


+10
dong云粉2017-5-26 18:10:26
本帖最后由 dong 于 2017-5-26 18:12 编辑

现在分享另外一个思路,原理是一摸一样的,看看有没有能看到这个帖子,照着这个思路做一下。
我们先提取出 总金额,然后直接开始判断并且赋值,赋值后又把分摊金额提取出来,然后算出还有多少可以用来分摊的临时总金额,然后一直这样循环,还是原来的套路,用行号变化,不同的地方就是多了一个数据项,已总结金额。需要注意到以下3点:01、数据源的使用        02、填表公式中赋值的顺序        03、对公式中的判断、匹配条件、执行条件的设置
        撸主过几天在发一个更简单实现这个分摊的方式   
思路2.jpg



+10
12下一页
需要登陆后才可进行回复 登录