起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2125|回复: 4

[结贴] 银行通帐的余额怎么计算

[复制链接]

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
发表于 2016-9-9 15:39:08 | 显示全部楼层 |阅读模式
本帖最后由 kenminkajp 于 2016-9-9 15:52 编辑

做个画面想输入银行的帐本的流水记录,请问我该如何计算余额

银行帐本的记录如下(例子)
日期     摘要     出金     入金     余额
20160901   营业额           500      500
20160902   营业额           1000     1500
20160902   ATM取款  800             700
数据库中有日期、摘要、出金、入金的字段,没有余额的字段。同时,在页面上需要显示余额。
我在baasData中增加了一列计算列,只是不知道怎么取到上一行的余额?

0

主题

1639

帖子

497

积分

中级会员

Rank: 3Rank: 3

积分
497
QQ
发表于 2016-9-9 17:28:54 | 显示全部楼层
Model.prototype.data1AfterRefresh = function(event){
                var data = this.comp("data1");
                var me;
                data.each(function(obj){
                        var i = Number(obj.row.val('income'))||0;
                        var o = Number(obj.row.val('outcome'))||0;
                        if(obj.index === 0){
                                obj.row.val('calc',i-o);
                        }else{
                                obj.row.val('calc',i-o+me);
                        }
                        me = obj.row.val('calc');
                });
        };

评分

参与人数 1威望 +10 收起 理由
kenminkajp + 10 很给力!

查看全部评分

回复我的时候请点击我当前评论旁边的回复按钮,能保证第一时间看到您的回复,在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

0

主题

1639

帖子

497

积分

中级会员

Rank: 3Rank: 3

积分
497
QQ
发表于 2016-9-9 17:29:32 | 显示全部楼层
cgrddv 发表于 2016-9-9 17:28
Model.prototype.data1AfterRefresh = function(event){
                var data = this.comp("data1");
                var me = thi ...

用遍历的方式写一个
回复我的时候请点击我当前评论旁边的回复按钮,能保证第一时间看到您的回复,在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-9-9 22:33:20 | 显示全部楼层
本帖最后由 kenminkajp 于 2016-9-10 10:28 编辑

谢谢你的回复。学习了,把理解的做个笔记。只是为什么计算的余额写不进去到baasData的字段中去(初始值为0)
Model.prototype.data1AfterRefresh = function(event){
                var data = this.comp("data1");                                     //定义使用的baasData
                var me;                                                                          //定义中间存储变量
                data.each(function(obj){
                        var i = Number(obj.row.val('income'))||0;             //取出入金字段的值,   这一步取到值
                        var o = Number(obj.row.val('outcome'))||0;         //取出出金字段的值,   这一步取到值
                        if(obj.index === 0){
                                obj.row.val('calc',i-o);                                     //如果是第一条,余额=入金-出金,    这一步为什么写不进去
                        }else{
                                obj.row.val('calc',i-o+me);                              //第二条起,余额=入金-出金+上次余额,    这一步为什么写不进去
                        }
                        me = obj.row.val('calc');                                         //中间保存余额,    取到的是初始值0
                });
        };
回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-9-10 14:35:28 | 显示全部楼层
本帖最后由 kenminkajp 于 2016-9-29 08:56 编辑

用自己的习惯写了个遍历。总算解决问题。

Model.prototype.zandakaKeisan = function(event) {
                var me = this;
                var kurikosi;    //中间变量
                var siwakeData = me.comp('siwakeData');        //定义baasData
                var lRow = siwakeData.getLastRow(), row, zandaka = [];  //求得记录数
                siwakeData.first(); //指针指到第一条
                row = siwakeData.getCurrentRow();
                zandaka = siwakeData.getValue("kingakuZ") - siwakeData.getValue("kingakuD");  //余额=入金-出金
                siwakeData.setValue("zandaka", zandaka);  //把余额写到baasData
                kurikosi = siwakeData.getValue("zandaka");  //把余额存到中间变量
                siwakeData.next();        //指针指到下一条
      if  (lRow != row){          //如果就一条数据,不进入遍历
                    do {
                            row = siwakeData.getCurrentRow();
                            zandaka = siwakeData.getValue("kingakuZ") - siwakeData.getValue("kingakuD") + kurikosi;                //计算余额=入金-出金+上条记录余额
                            siwakeData.setValue("zandaka", zandaka);  //把余额写到baasData
                            kurikosi = siwakeData.getValue("zandaka");  //把余额存到中间变量
                            siwakeData.next();        //指针指到下一条
                    } while (lRow != row);
                }
        };
566541240274465403.jpg



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-28 15:30 , Processed in 0.108576 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表