Foxtable(狐表)用户栏目专家坐堂 → 高效流水账 现金日记录入账 页面实现后 怎么实现收入和支出 自动计算余额呢?


  共有2589人关注过本帖树形打印复制链接

主题:高效流水账 现金日记录入账 页面实现后 怎么实现收入和支出 自动计算余额呢?

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107744 积分:548059 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/6 20:23:00 [显示全部帖子]

页面只是一行记录,无法结合这种表事件用法,可以参考这里的金额计算方法:http://www.foxtable.com/mobilehelp/topics/0130.htm。注意calc函数的用法

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107744 积分:548059 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/6 20:31:00 [显示全部帖子]

上传实例说明

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107744 积分:548059 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/6 21:22:00 [显示全部帖子]

Dim wb As New weui

Select Case e.Path
    Case "xjrjz.htm"
        If e.PostValues.Count = 0 Then
            wb.AddPageTitle("","ph1","博融数据现金日记账")
            wb.AddForm("","form1","xjrjz.htm")
            
            With wb.AddInputGroup("form1","ipg1","现金日记账")
                
                .AddInput("日期","日期","date")
                .AddSelect("凭证种类","凭证种类","|fa piao|收据|收条|小piao|物流单|快递单|其它单据")
                .AddInput("凭证号数","凭证号数","Text")
                .AddSelect("对方科目","对方科目","|日常办公|销售回款|日常开支|货物订货|其它项目")
                .AddInput("摘要","内容摘要","Text")
                '.AddInput("日页","日页","Text")
                With  .AddInput("借方金额","收入金额","number")
                    .Step = "0.01"
                    .Attribute = "onchange='calc()'"
                End With
                .AddSelect("借方","收入人员","|肖妍|费泓纶|田景兰")
                With .AddInput("贷方金额","支出金额","number")
                    .Step = "0.01"
                    .Attribute = "onchange='calc()'"
                End With
                .AddSelect("贷方","支出人员","|肖妍|费泓纶|田景兰")
                .AddInput("余额","余额","number")
            End With
            
            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "确定", "submit")
            End With
            
            wb.AppendHTML("<script src='./lib/ajaxform.js'></script>",True) '引入脚本文件
            e.WriteString(wb.Build)
        Else
            Dim nms() As String = {"日期","摘要","对方科目"} '不能为空的列名数组
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) = False Then '生成错误提示页
                    With wb.AddMsgPage("","msgpage","增加失败", nm & "列不能为空!")
                        .icon = "Warn" '改变图标
                        .AddButton("btn1","返回").Attribute = ""
                    End With
                    e.WriteString(wb.Build)
                    Return ' '必须返回
                End If
            Next
            nms = New String() {"日期","凭证种类","凭证号数","摘要","对方科目","日页","借方金额","贷方金额","余额","借方","贷方"}  '重新定义了nms数组,增加了两列.
            Dim dr As DataRow = DataTables("现金日记账").AddNew()
            For Each nm As String In nms
                If e.PostValues.ContainsKey(nm) Then
                    dr(nm) = e.PostValues(nm)
                End If
            Next

            '保存并生成增加成功提示页面
            dr.save()
            With wb.AddMsgPage("","msgpage","增加成功", "好好学习,天天向上") '生成成功提示页
                .AddButton("btn1","继续增加","xjrjz.htm")
            End With
            e.WriteString(wb.Build)
        End If
        
End Select

js的function 关键字必须是小写的

function calc(){
    document.getElementById("余额").value = document.getElementById("借方金额").value - document.getElementById("贷方金额").value;
}

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107744 积分:548059 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/6 21:56:00 [显示全部帖子]

这种需要使用submitAjaxFileds提交到后台计算,http://www.foxtable.com/mobilehelp/topics/0103.htm

服务端根据主键查找到当前行,再根据当前行得到上一行的余额:
余额  = 上一行的余额 + submitAjaxFileds提交的借方金额 - submitAjaxFileds提交的贷方金额

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107744 积分:548059 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/6 22:34:00 [显示全部帖子]

function setCodes(){
    var result= submitAjaxFileds('后台计算页面.htm','','日期','凭证种类','借方金额','贷方金额',false);
    if(result){
 document.getElementById("余额").value =result
    }
}

服务端添加一个页面“后台计算页面.htm

根据提交的数据查找到当前行,再根据当前行得到上一行的余额:
当前行余额  = 上一行的余额 + submitAjaxFileds提交的借方金额 - submitAjaxFileds提交的贷方金额
然后把余额返回
[此贴子已经被作者于2019/10/6 22:34:22编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107744 积分:548059 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/7 13:21:00 [显示全部帖子]

Dim dr As DataRow
Dim drs As List(of DataRow)
dr = DataTable("现金日记账").Find("[某某列,比如日期,或者编号] < '" & e.Values("日期") & "' and 凭证种类='" & e.Values("凭证种类") & "'", "[_SortKey] Desc") '根据提交的数据找出本行

再接着11楼的用法,找出上一行,和后面的行进行处理

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107744 积分:548059 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/7 14:24:00 [显示全部帖子]

很简单的错误,自己学会判断

 回到顶部